1

标签的 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 与表单一起提交。

4

2 回答 2

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" />

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

于 2012-05-18T13:51:41.033 回答
0

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

从技术上讲,您可能会做一些不正当的 OGNL,当然您也可以通过 JavaScript 和隐藏字段预提交来做到这一点,但是正如其他答案所述,您最好在 Java 层而不是视图层中进行。

我不同意另一个答案,因为对象列表似乎更具交流性,并且易于构建,但是从技术角度来看,这种情况没有区别,因此更多的是见仁见智。

于 2012-05-18T15:55:43.727 回答