将地图从JSP发布到动作

时间:2013-09-12 06:28:54

标签: jsp struts2

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

我不断获得并发修改例外。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

  4. 您的LinkedHashMap使用序号作为键;为什么不使用List呢?

  5. 顺便说一下,完全未经测试但应该是

    <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();
    

    假设他们是连续的,订购等等。但这个解决方案对我来说似乎不可靠......