如何在Struts 2中的s:doubleselect标签中设置名称和值?

时间:2013-04-02 10:00:46

标签: jsp struts2

这是我的代码:

<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,依此类推。

默认情况下,两个选择框一个在另一个下方显示,是否可以将它们并排放置?

1 个答案:

答案 0 :(得分:1)

您需要使用地图表示法#{...}在列表中创建地图。并使用doubleListKey标记的doubleListValue<s:doubleselect>属性与keyvalue关键字来获取地图中的值。

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