2009-06-10 4 views
5

移入コレクション

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

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

public class StrutsAction extends Action { 
    public Bar bar; 
} 

だから私のStruts2の形式では、Fooのを移入するための最良の方法は何ですか?直感的に、私はしたい:

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

しかし、それは動作していないし、衝突を引き起こします。私は答えがとてもシンプルで、私はそれを見落としていると確信しています。

答えて

12

正しく理解すれば、各隠しフィールドに異なる名前を付けるだけですか?フォームが送信されているときに、あなたが適切なゲッター/セッターを持っている場合は、あなたに

<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" /> 

と同等のものを与える必要があり

<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> 

は、それはすべての値を設定する必要があります。

+1

あなたは正しいです。私は、単に正しい構文([0])を知らなかったと思います。 – Droo

+1

ありがとうございました...!それも私を助けました...(2年後:-P) –