我有一个Map,其键是String
,值可能是String
或另一个Map
,它取决于从Java文件返回的响应。
我需要使用Struts2迭代器在下拉列表中填充该响应。
我的要求是,如果值为String
,我需要使用<option>
标记。如果值为Map
,我需要选择<optgroup>
。
所以,我需要检查一下&#39;值&#39;该地图的格式为String
或Map
,并相应填充。
答案 0 :(得分:2)
看起来很简单:
<select name="foo">
<s:iterator value="myMapOfMaps" var="currentEntry">
<s:if test="%{#currentEntry.value instanceof java.util.Map}">
<optgroup label="<s:property value='%{#currentEntry.key}'/>">
<s:iterator value="#currentEntry.value" var="innerEntry">
<option value="<s:property value='%{#innerEntry.key}'/>">
<s:property value='%{#innerEntry.value}' />
</option>
</s:iterator>
</optgroup>
</s:if>
<s:else>
<option value="<s:property value='%{#currentEntry.key}'/>">
<s:property value='%{#currentEntry.value}' />
</option>
</s:else>
</s:iterator>
</select>