我的应用程序使用 Struts 2 框架,我的代码如下,
/*Setting dynamic dropdown of service Type*/
ShowSearch drop=new ShowSearch();
service=drop.serviceType();
setService(service);
我从数据库中获取值列表(假设值是
"Apple","Cat","Jack","Zag"
),它已显示在 JSP 中提到的 Struts 2 下拉列表中:
<s:select id="serviceType" name="serviceType"
label="What is the service offering" required="true"
value="%{serviceType}" list="service" />
当我尝试执行以下操作时,可以说
localhost:8080/as/prd?id=first
“first”的
"serviceType"
下拉列表的实际值为 "Jack"
。但现在,下拉列表按照从数据库中获取的顺序显示(即基于列表"Service"
)。
我的要求是显示
"Jack"
,然后显示"Apple"
,"Cat"
,"Zag"
,...
。
我该怎么做才能表现出这样的样子?
在操作类中设置该字符串变量。然后该字符串变量将首先显示在下拉列表中。
这样显示称为按字母顺序排序。为此,您可以在渲染阶段之前修改列表。假设你的列表集合元素是一个简单的字符串,那么
Collections.sort(myList);
会做你想做的事。
另一种方法是使用
s:sort
标签并编写一个对列表进行排序的比较器,然后将其包裹在 s:select
标签
<s:sort comparator="myComparator" source="myList">
<s:select id="serviceType" name="serviceType"
label="What is the service offering" required="true"
value="%{serviceType}" list="myList" />
</s:sort>
编写一个简单的比较器
public Comparator getMyComparator() {
return new Comparator() {
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
String s2 = (String) o2;
return s1.compareTo(s2);
}
};
}
更详细的说明如何对集合进行排序以及如何使用
Comparable
和 Comparator
您可以在 here 找到。