1

这是我的代码:

<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 就像在选择标记中完成的一样,如下面的代码 Jan=1 , 二月=2

<s:select label="Select a month" 
        headerKey="-1" headerValue="Select Month"
        list="#{'1':'Jan', '2':'Feb', '3':'Mar', '4':'Apr'}" 
        name="yourMonth" />

因此,在我的操作类中,我可以将操作类中的值检索为 Appserver 的 110、Apache 的 1 等等。

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

4

1 回答 1

1

您需要使用地图表示法#{...}在列表中创建地图。并使用标签和关键字的doubleListKeydoubleListValue属性从地图中获取值。<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"/>
于 2013-04-02T12:06:23.970 回答