s:带有动态键参数的Map上的迭代器

时间:2014-02-27 13:33:19

标签: java jsp struts2 ognl

我在以下Struts2 JSP中遇到了内部迭代器的问题:

<s:iterator value="thatCompany.tags" var="tagGroups">
  <tr>
     <td><s:property value="#tagGroups.key" /></td><!-- this works nicely! -->
     <td>
    <ul>
     <s:iterator value="{thisCompany.tags['#tagGroups.key']}" var="thisTagGroup">
           <!-- doesn't work, displays one empty LI element -->
           <li> <s:property value="#thisTagGroup.key"/>
      </s:iterator>
    </ul>
      </td>
<!-- snip -->

thisCompany.tags thatCompany.tags 的类型均为Map<String, Map<BigDecimal, String>>

1 个答案:

答案 0 :(得分:1)

知道了,这种语法有效:

<s:iterator value="thisCompany.tags[#tagGroups.key]" var="foobar">
  <li> <s:property value="#foobar.value"/>
</s:iterator>

但这很奇怪:如果我将变量命名为 thisTagGroup 而不是 foobar ,它就不再起作用了。是因为这个以某种方式保留,变量名称甚至不能以 this - 开头吗?