这是我的代码:
<s:set name="serverList"
value="#{
'AppServer': {'Apache', 'Tomcat', 'JBoss'},
'Database': {'Oracle', 'MySQL'}
}" />
<s:doubleselect label="Server (OGNL) "
name="server1" list="#serverList.keySet()"
doubleName="server2" doubleList="#serverList[top]" />
在这里我如何将值Appserver映射到某个键110和相应的{'Apache','Tomcat','JBoss'}分别映射到1,2,3,就像在select标签中完成一样 如下面的代码Jan = 1,Feb = 2
<s:select label="Select a month"
headerKey="-1" headerValue="Select Month"
list="#{'1':'Jan', '2':'Feb', '3':'Mar', '4':'Apr'}"
name="yourMonth" />
因此,在我的动作类中,我可以将动作类中的值检索为110表示Appserver,1表示Apache,依此类推。
默认情况下,两个选择框一个在另一个下方显示,是否可以将它们并排放置?
答案 0 :(得分:1)
您需要使用地图表示法#{...}
在列表中创建地图。并使用doubleListKey
标记的doubleListValue
和<s:doubleselect>
属性与key
和value
关键字来获取地图中的值。
<s:set name="serverList"
value="#{
'AppServer': #{'11':'Apache', '12':'Tomcat', '13':'JBoss'},
'Database': #{'21':'Oracle', '22':'MySQL'}
}" />
<s:doubleselect label="Server (OGNL) "
name="server1" list="#serverList.keySet()"
doubleName="server2" doubleList="#serverList[top]"
doubleListKey="key" doubleListValue="value"/>
要并排放置选择框,您需要更改<s:doubleselect>
标记的freemarker模板。
<强>更新强>
<s:set name="serverList" value="#{'101':'AppServer', '202':'Database'}" />
<s:set name="serverList2"
value="#{'101': #{'11':'Apache', '12':'Tomcat', '13':'JBoss'}, '202': #{'21':'Oracle', '22':'MySQL'}}" />
<s:doubleselect label="Server (OGNL) "
name="server1" list="#serverList.keys" listValue="#serverList[top]"
doubleName="server2" doubleList="#serverList2[top]" doubleListKey="key"
doubleListValue="value"/>