1

我正在为我的应用程序使用 Struts 2 框架,我的代码如下,

/*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 实际值"serviceType"是“杰克”。但是现在,下拉菜单按照从数据库中获取的顺序显示(即基于列表“服务”)。

我的要求是"Jack"随后显示"Apple", "Cat", "Zag", .... 我该怎么做才能表现出这样的样子?

4

2 回答 2

0

这样的显示称为按字母顺序排序。为此,您可以在渲染阶段之前修改列表。假设您的列表集合元素是一个简单的字符串,那么

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);
    }
  };
}

更详细的说明如何对集合进行排序以及如何使用ComparableComparator您可以在此处找到。

于 2013-11-08T10:29:47.467 回答
0

在您的操作类中设置该字符串变量。然后该字符串变量将首先显示在下拉列表中。

于 2013-11-14T11:39:18.403 回答