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

Java 使用Struts Select标记指定选项标签(listValue),java,struts2,ognl,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 Dis

标签的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,以表格形式提交。

,而不是像你所编码的那样使用原始数组,你应该考虑从这个视图后面的动作中得到一个映射。在这种情况下,操作中的映射将如下所示:

Map<String, Integer> myMap = new HashMap<>();
myMap.put("1 Km", 1);
...
Map myMap=newhashmap();
myMap.put(“1公里”,1);
...
视图中的代码将是:

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


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

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

从技术上讲,您可能会执行一些不正常的OGNL,您当然可以通过JavaScript和一个隐藏字段pre-submit来执行,但正如其他答案所述,您最好在Java层而不是视图层执行

我不同意另一个答案,因为对象列表似乎更容易沟通,也更容易构建,但从技术角度看,在这种情况下没有区别,所以更多的是观点问题