Affichage des articles dont le libellé est Struts. Afficher tous les articles
Affichage des articles dont le libellé est Struts. Afficher tous les articles

dimanche 29 juillet 2012

Struts et la balise option/select

Struts met à disposition un moyen de générer un dropbox (liste déroulante) en HTML.
Son utilisation est assez simple finalement.
Voici un exemple d'utilisation.

Dans votre JSP, ajouté :
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<html:select property="proprietaire" >
  <html:optionsCollection name="InputForm"
    property="booleanList"
    label="label"
    value="value" />
</html:select>
Dans votre formulaire ajoutez :
import org.apache.struts.util.LabelValueBean;

public class InputForm extends ActionForm
{
    private String proprietaire ;

    private List<LabelValueBean> booleanList = new ArrayList<LabelValueBean>() ;
    
    public InputForm() 
    {
        booleanList.add(new LabelValueBean("OUI", "true")) ;
        booleanList.add(new LabelValueBean("NON", "false")) ;
    }

    public void setBooleanList(List<LabelValueBean> booleanList)
    {
        this.booleanList = booleanList;
    }

    public List<LabelValueBean> getBooleanList()
    {
        return booleanList;
    }

    public void setProprietaire(String proprietaire)
    {
        this.proprietaire = proprietaire;
    }

    public String getProprietaire()
    {
        return proprietaire;
    }
}
Le principe de fonctionnement est le suivant :
  • Struts génère la liste avec le contenu de l'attibut booleanList (property="booleanList") du formulaire InputForm (name="InputForm")
  • Ensuite, il prend la valeur de l'attribut proprietaire (property="proprietaire") pour sélectionner la bonne option.
  • A la validation du formulaire, il valorise l'attribut proprietaire.
Comment fait-il pour savoir ce qu'il faut afficher dans la liste et la valeur a transmettre ?
C'est l'attribut label="label" et value="value" qui indique quelle propriété de l'objet se trouvant dans la liste, prendre.
En effet, la classe LabelValueBean contient :
public class LabelValueBean implements Serializable
{
    private String label;
    private String value;
}
Cela veut donc dire qu'on peut utiliser nos propre objet et simplement indiquer les attributs à prendre.

Pour ceux qui ne souhaite pas utiliser de liste dynamique, il est possible d'utiliser directement :
<html:option value="0">Select Langue</html:option>
<html:option value="1">France</html:option>
<html:option value="2">English</html:option>
dans le html:select