2

在我的操作中,我有一张将发送到 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>

而且我不断收到并发修改异常。

有人有线索吗?非常感谢!!

4

1 回答 1

2
  1. 您不需要键和值,它们会自动处理;

  2. 关键部分在语法上是错误的:删除点(或方括号);

  3. 关键部分缺少双引号;您的语法是访问列表;

  4. 您的 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();

假设它们是连续的、有序的等。但这个解决方案对我来说似乎并不可靠......

于 2013-09-12T08:16:45.607 回答