Struts2: esempio di utilizzo del tag s:iterator
Ho creato un semplice progetto che mi è servito per capire meglio come funzionano i tags s:iterator e s:property. Innanzi tutto si parla di struts2 integrato con Tiles2.
In questo esempio, ho creato una struttura dati molto semplice:
package topolinia.model; public class Personaggio { String nome; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } String[] oggetti; public String[] getOggetti() { return oggetti; } public void setOggetti(String[] oggetti) { this.oggetti = oggetti; } public Personaggio(String nome, String[] oggetti) { this.nome = nome; this.oggetti = oggetti; } } |
Nella classe che gestisce le actions dichiaro un array di oggetti come sopra, specificando i get/set per renderli visibili alla jsp, oltre ai metodi che mappano le actions:
package topolinia.action; import topolinia.model.Personaggio; import com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public class Topolinia extends ActionSupport { private Personaggio io; public void setIo(Personaggio io) { this.io = io; } public Personaggio getIo() { return io; } private Personaggio[] amici; public void setAmici(Personaggio[] amici) { this.amici = amici; } public Personaggio[] getAmici() { return amici; } public String paperino() throws Exception { setIo(new Personaggio("Paperino", new String[]{"Cioccolata","Sigarette"})); setAmici(new Personaggio[]{new Personaggio("Pippo", new String[]{"Noccioline","Fiches"}), new Personaggio("Topolino", new String[]{"Carte","Apribottiglie"})}); return SUCCESS; } public String pippo() throws Exception { setIo(new Personaggio("Pippo", new String[]{"Noccioline","Bicchiere"})); setAmici(new Personaggio[]{new Personaggio("Paperino", new String[]{"Cioccolata","Sigarette"}), new Personaggio("Topolino", new String[]{"Carte","Apribottiglie"})}); return SUCCESS; } } |
nel file struts.xml le due classi sono descritte molto semplicemente in questo modo:
<action name="paperino" class="topolinia.action.Topolinia" method="paperino" > <result type="tiles" name="success">personaggio_page</result> </action> <action name="pippo" class="topolinia.action.Topolinia" method="pippo" > <result type="tiles" name="success">personaggio_page</result> </action> |
e questa è la jsp che visualizza i dati:
<p> Ciao, io sono <s:property value="io.nome"/>, i miei oggetti sono: <s:property value="io.oggetti"/> </p> <p>Questi sono i miei amici (e i loro oggetti):</p> <ul> <s:iterator value="amici"> <li><s:property value="nome"/> (<s:property value="oggetti"/>)</li> </s:iterator> </ul> <p>Questi è un altro modo di visualizzare i miei amici (e i loro oggetti):</p> <ul> <s:iterator value="amici"> <li><s:property value="nome"/> </li> <ul> <s:iterator value="oggetti"> <li><s:property /></li> </s:iterator> </ul> </s:iterator> </ul> |
Il risultato è (…tenetevi forte…) questo:
Leave a Reply