2009-06-10 2 views
5

Sto cercando di compilare un elenco di fagioli da un modulo:Popola raccolta da Struts2 formulario di presentazione

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

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

public class StrutsAction extends Action { 
    public Bar bar; 
} 

Quindi, nella mia forma Struts2, qual è il modo migliore per popolare Foo? Intuitivamente, voglio fare:

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

ma che non funziona e causerebbe collisioni. Sono sicuro che la risposta è molto semplice e la sto ignorando.

risposta

12

Se ho capito bene, vuoi solo un nome diverso per ogni campo nascosto?

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

che dovrebbe dare l'equivalente di

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

Se si dispone di una corretta getter/setter, si deve impostare tutti i valori in cui viene presentata la forma.

+1

Avete ragione signore. Suppongo che semplicemente non conoscessi la sintassi corretta (cioè il [0]). – Droo

+1

Grazie ...! mi ha aiutato anche ... (anche dopo 2 anni :-P) –