【发布时间】:2013-05-20 13:33:39
【问题描述】:
我目前正在使用 Struts 2,我遇到了这种情况:
在我的动作类中:
private Map<String, Map<Integer, MyEntity>> map;
public void setMap(Map<String, Map<Integer, MyEntity>> map) {
this.map = map;
}
public Map<String, Map<Integer, MyEntity>> getMap() {
return this.map;
}
在我的 JSP 中,我使用迭代器通过“key”变量遍历映射,然后遍历另一个列表(整数)并使用该整数遍历第二个映射,如下所示:map[${key}][${myInteger}]
<s:iterator value="map" status="status">
<tr>
<td>${status.index}</td>
<td>${key}</td>
<s:iterator value="integersList" id="myInteger">
<td>
<s:textfield name="map[${key}][${myInteger}].myEntityAttribute" value="%{map[#attr.key][#attr.myInteger].myEntityAttribute}" id="attr_${key}_${myInteger}" theme="simple" size="10" />
</td>
</s:iterator>
</tr>
</s:iterator>
这样做是为了获得价值工作正常:value="%{map[#attr.key][#attr.myInteger].myEntityAttribute}"
但是当我想保存更改时,我无法让它工作:name="map[${key}][${myInteger}].myEntityAttribute"
我不知道我做错了什么,或者如果这不能做到(我很确定一定有办法),但我有点厌倦了尝试。
我会很感激任何建议,真的,任何可以提供帮助的东西都是受欢迎的。
【问题讨论】:
-
看到这个问题的答案:stackoverflow.com/q/15006868/1700321。
-
你为什么确定,你尝试了什么?
-
感谢 Aleksandr,通过这些答案,我意识到 OGNL 的一些限制。我想做的事情是不可能的,所以我必须找到另一种方法。
-
@johncol:确切地说,这不是 OGNL 限制,而是 Struts2 中的 OGNL 限制。
标签: java loops dictionary struts2 type-conversion