Struts2: esempio di utilizzo del tag s:iterator

Scarica il progetto di esempio (Eclipse Helios).

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:

Scarica il progetto di esempio (Eclipse Helios).

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>