我正在为我的应用程序使用Struts2框架,我的代码如下,
/*Setting dynamic dropdown of service Type*/
ShowSearch drop=new ShowSearch();
service=drop.serviceType();
setService(service);
我从DB获取值列表(假设值为“Apple”,“Cat”,“Jack”,“Zag”)并且它已在JSP中提到的struts2下拉列表中显示。
<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”。但是现在,下拉按照从DB中获取的顺序显示(即基于列表“服务”)。
我的要求是显示“杰克”然后关注"Apple"
,"Cat"
,"Zag"
,...
。我应该怎么做才能表现出来?
答案 0 :(得分:0)
这样的显示称为按字母顺序排序。为此,您可以在呈现阶段之前修改列表。假设你的list collection元素是一个简单的字符串,然后是
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。
答案 1 :(得分:0)
在您的操作类中设置该字符串变量。然后,该字符串变量将首先显示在下拉列表中。