2009-06-10 14 views
5

Próbuję zapełnić listę fasoli z formularza:Populate Odbiór Struts2 formularzu zgłoszeniowym

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

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

public class StrutsAction extends Action { 
    public Bar bar; 
} 

Więc w moim formularzu Struts2, co jest najlepszym sposobem, aby zapełnić Foo? Intuicyjnie chcę:

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

ale to nie działa i może powodować kolizje. Jestem pewien, że odpowiedź jest bardzo prosta i przeoczam to.

Odpowiedz

12

Jeśli dobrze rozumiem, po prostu chcesz inną nazwę dla każdego ukrytego pola?

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

które powinny dać równowartość

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

Jeśli masz właściwą getter/setter, należy ustawić wszystkie wartości, gdy formularz jest składany.

+1

Masz rację, proszę pana. Przypuszczam, że po prostu nie znałem właściwej składni (tj. [0]). – Droo

+1

Dziękuję ...! pomógł mi też ... (nawet po 2 latach :-P) –