使用Struts Select标记指定选项标签(listValue)

时间:2012-05-18 13:27:24

标签: java struts2 ognl

标签的listValue属性用于指定选择该选项时应向用户显示的标签。

示例 -

<s:select name="user" list='users' listValue="username" listKey="userId"
label="Select an User" />

在枚举带有OGNL文字的列表时是否可以这样做?

<s:select name="distance" cssClass="textBoxStyle" headerValue="Select Distance"
 headerKey="" list="{'1 Km', '2 Km', '3 Km', '5 Km', '8 Km', '12 Km', '20 Km'}" />

我希望向用户显示1Km,并且要使用表单提交整数1而不是字符串1Km。

2 个答案:

答案 0 :(得分:0)

您应该考虑从此视图后面的Action中获取一个Map,而不是像您编码的那样使用原始数组。在这种情况下,Action中的Map将如下所示:

Map<String, Integer> myMap = new HashMap<>();
myMap.put("1 Km", 1);
...

,视图中的代码为:

<s:select name="distance" cssClass="textBoxStyle" headerValue="Select Distance"
    headerKey="" list="myMap" />

将地图的键视为标签,将值视为选项实体。

答案 1 :(得分:0)

您需要使用listKeylistValue属性,并构建实际的对象列表。

从技术上讲,你可能会做一些反常的OGNL,你当然可以通过JavaScript和隐藏字段预先提交,但正如另一个答案所说,你最好在Java层而不是视图中做这件事。层

我不同意另一个答案,因为对象列表似乎更具沟通性,易于构建,但从技术角度来看,这种情况没有区别,所以更多的是意见问题。