如何从Struts 2下拉列表中获取DB的值以及列表

时间:2013-11-08 06:44:39

标签: java jsp struts2 tags struts2-jquery

我正在为我的应用程序使用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"...。我应该怎么做才能表现出来?

2 个答案:

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

更详细的解释如何对集合进行排序以及如何使用ComparableComparator找到here

答案 1 :(得分:0)

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