Afficher une liste de beans avec Struts 2

ListeNous allons voir ici comment afficher une liste (java.util.List) ou tout autre objet implémentant l’interface java.util.Iterator avec le framework Struts 2.1. Notre liste sera une liste de bean respectant la norme JavaBean. Pour cet exemple, nous allons définir dans un premier temps notre bean ItemBean. Puis dans une Action Struts, nous créérons une liste de ItemBean, que nous afficherons dans une page HTML via une JSP.

Dans un premier temps, nous définissons notre ItemBean avec deux champs: nom et prix.

package org.vialle.fivefreshminutesit.iterator;
 
/**
 * Java Bean representant un élément avec deux champs: le nom et le prix.
 *
 * @author Eric Vialle
 */
public class ItemBean {
 
	private String	nom;
 
	private double	prix;
 
	/**
	 * @param nom
	 *            the nom to set
	 */
	public void setNom(String nom) {
		this.nom = nom;
	}
 
	/**
	 * @return the nom
	 */
	public String getNom() {
		return nom;
	}
 
	/**
	 * @param prix
	 *            the prix to set
	 */
	public void setPrix(double prix) {
		this.prix = prix;
	}
 
	/**
	 * @return the prix
	 */
	public double getPrix() {
		return prix;
	}
}

Puis nous définissons notre action, nous tacherons d’afficher le contenu de itemsList:

package org.vialle.fivefreshminutesit.iterator;
 
import java.util.ArrayList;
import java.util.List;
 
import com.opensymphony.xwork2.ActionSupport;
 
/**
 * @author Eric VIALLE
 */
public class LoopAction extends ActionSupport {
 
	/** Liste que nous souhaitons afficher dans la JSP. */
	private List	itemsList;
 
	/**
	 * @return the itemsList
	 */
	public List getItemsList() {
		return itemsList;
	}
 
	/**
	 * @param itemsList
	 *            the itemsList to set
	 */
	public void setItemsList(List itemsList) {
		this.itemsList = itemsList;
	}
 
	/** Point d'entrée standard de notre action Struts. */
	public String execute() {
 
		itemsList = new ArrayList();
 
		// Ajout du premier élément
		ItemBean item1 = new ItemBean();
		item1.setNom("Ordinateur");
		item1.setPrix(799.99);
		itemsList.add(item1);
 
		// Ajout du second élément
		ItemBean item2 = new ItemBean();
		item2.setNom("Voiture");
		item2.setPrix(11990);
		itemsList.add(item2);
 
		// Ajout du troisieme élément
		ItemBean item3 = new ItemBean();
		item3.setNom("Avion");
		item3.setPrix(310000000);
		itemsList.add(item3);
 
		return SUCCESS;
	}
}

Puis nous développons notre JSP: /itemsDisplay.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
	<%-- avec %{itemsList.size} <=> getItemsList().getSize() --%>
	Taille de la liste:<s:property value="%{itemsList.size}"/><br/>
	<%-- On déroule la liste itemsList --%>
	<s:iterator value="itemsList">
		<%-- <s:property value="nom"/> <=> itemBean.getNom() --%>
		<s:property value="nom"/> - <s:property value="prix"/> Euros<br/>
	</s:iterator>
</body>
</html>

Enfin, nous configurons ainsi, notre action dans le fichier struts-config.xml, comme n’importe quelle action:

<package name="exampleIterator" namespace="/exampleiterator" extends="struts-default">
		<action name="loop" class="org.vialle.fivefreshminutesit.iterator.LoopAction">
			<result name="success">/itemsDisplay.jsp</result>
		</action>
	</package>

Nous aurons la joie de voir cette page, lors de l’appel via notre navigateur à la page http://localhost:8080/MonApplicationTest/exampleiterator/loop:

<html> 
<body> 
	Taille de la liste:3<br/> 
		Ordinateur - 799.99 Euros<br/> 
		Voiture - 11990.0 Euros<br/> 
		Avion - 3.1E8 Euros<br/> 
</body> 
</html>