在我的行动中,我有一张将被发送到JSP的地图
Map<String,Person> map = LinkedHashMap<String,Person>();
map.put("1",personA);
map.put("2",personB);
map.put("3",personC);
好吧,我可以正确地使用地图中的值来渲染JSP,但我很难找到一个解决方案,让我可以将地图恢复到另一个动作中。这是我试过的:
<s:iterator value="map" status="p">
<s:hidden name="map.[%{#p.index}].key"/>
<s:hidden name="map.[%{#p.index}].value.name"/>
<s:hidden name="map.[%{#p.index}].value.address"/>
</s:iterator>
我不断获得并发修改例外。
有人有线索吗?非常感谢!!
答案 0 :(得分:2)
您不需要键和值,它们会自动处理;
关键部分语法错误:删除点(或方括号);
关键部分是缺少双引号;您的语法是访问List;
您的LinkedHashMap使用序号作为键;为什么不使用List呢?
顺便说一下,完全未经测试但应该是
<s:iterator value="map" status="p">
<s:hidden name="map['%{#p.index}'].name"/>
<s:hidden name="map['%{#p.index}'].address"/>
</s:iterator>
在Java中就像是
((Person)getMap().get("1")).setName();
((Person)getMap().get("1")).setAddress();
假设他们是连续的,订购等等。但这个解决方案对我来说似乎不可靠......