Struts2迭代器用不同类型填充下拉列表

时间:2016-03-31 06:21:54

标签: java jsp select struts2 iterator

我有一个Map,其键是String,值可能是String或另一个Map,它取决于从Java文件返回的响应。

我需要使用Struts2迭代器在下拉列表中填充该响应。

我的要求是,如果值为String,我需要使用<option>标记。如果值为Map,我需要选择<optgroup>

所以,我需要检查一下&#39;值&#39;该地图的格式为StringMap,并相应填充。

1 个答案:

答案 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>