Java 从Struts2表单提交填充集合

Java 从Struts2表单提交填充集合,java,struts2,struts,Java,Struts2,Struts,我正在尝试从表单填充bean列表: public class Foo { public String attr1; public String attr2; } public class Bar { public List<Foo> foos; } public class StrutsAction extends Action { public Bar bar; } 公共类Foo{ 公共字符串属性1; 公共字符串属性2; } 公共类酒吧{ 公开名单;

我正在尝试从表单填充bean列表:

public class Foo {
   public String attr1;
   public String attr2;
}

public class Bar {
   public List<Foo> foos;
}

public class StrutsAction extends Action {
   public Bar bar;
}
公共类Foo{
公共字符串属性1;
公共字符串属性2;
}
公共类酒吧{
公开名单;
}
公共类结构动作扩展动作{
公共酒吧;
}
在我的Struts2表格中,填充Foo的最佳方式是什么?直觉上,我想做:

<input type="hidden" name="bar.foos.attr1" />


但这不起作用,会导致碰撞。我确信答案很简单,我忽略了它。

如果我理解正确,您只需要为每个隐藏字段指定不同的名称

<s:iterator value="bars" status="key">
    <s:hidden name="bar.foos[%{#key.index}].attr1" value="attr1" />
    <s:hidden name="bar.foos[%{#key.index}].attr2" value="attr2" />
</s:iterator>

这应该给你相当于

<input type="hidden" name="bar.foos[0].attr1" value="some value" />
<input type="hidden" name="bar.foos[0].attr2" value="some other value" />
<input type="hidden" name="bar.foos[1].attr1" value="some value" />
<input type="hidden" name="bar.foos[1].attr2" value="some other value" />


如果您有合适的getter/setter,则在提交表单时应该设置所有值。

您是对的,先生。我想我只是不知道正确的语法(即[0])。谢谢。。。!它也帮助了我……(即使两年后:-P)