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

问题描述 投票:0回答:2

我的应用程序使用 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"
...

我该怎么做才能表现出这样的样子?

java sorting jsp struts2 struts2-jquery
2个回答
0
投票

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


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

更详细的说明如何对集合进行排序以及如何使用

Comparable
Comparator
您可以在 here 找到。

© www.soinside.com 2019 - 2024. All rights reserved.