IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Comment initialiser une liste dans la méthode reset()


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut Comment initialiser une liste dans la méthode reset()
    Bonjour,
    je voudrais initialiser une liste de choix (genre : <html:select property="projets" multiple="multiple" size="10">) dans un formulaire en utilisant la méthode reset.

    qq un pourrait me décrire comment faire au niveau de la méthode reset() et comment afficher la liste avec son contenu dans la jsp.

    Merci

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Tu aurais dû préciser si ta liste est une liste de String ou une liste de beans.

    S'il s'agit d'une liste de String, tu peux l'initialiser comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	private ArrayList listeProjets = new ArrayList() ;
     
    	public void setListeProjets (ArrayList listeProjets ) {
    		this.listeProjets = listeProjets ;
    	}
    	public ArrayList getListeProjets() {
    		return this.listeProjets ;
    	}
    	public void reset(ActionMapping mapping, HttpServletRequest request)
    	{
    		this.listeProjets = new ArrayList() ;
    		this.listeProjets.add("projet1") ;
    		this.listeProjets.add("projet2") ;
    		...
    	}
    Ensuite, si tu as une liste déroulante à choix multiples, tu dois définir dans ton ActionForm une propriété de type String[] avec getter et setter.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	private String[] projets= new String[10];
    	public String[] getProjets()
    	{
    		return this.projets;
    	}
    	public void setProjets(String[] projets)
    	{
    		this.projets=projets;
    	}
    Et enfin dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html:form action="tonAction">
       <html:select property="projets" multiple="true" size="10">
    	<html:options property="listeProjets"/>
       </html:select>
    </html:form>
    Si c'est une liste de beans Projet, ayant par exemple pour propriétés code et libelle, l'affichage dans la jsp se fera comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html:form action="tonAction">
       <html:select property="projets" multiple="true" size="10">
    	<html:optionsCollection property="listeProjets" value="code" label="libelle"/>
       </html:select>
    </html:form>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    Salut,
    merci pour ta réponse, j'ai essayé la solution d'initialiser la liste par String[], ça marche bien. mais pour la deuxième solution j'arrive pas à voir le redu de la page quand je sollicite le formulaire.

    voici mon code :

    Struts-config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form-bean name="rapportParametresForm" type="frontend.forms.RapportParametresForm">
    	<form-property name="projets" type="java.lang.String[]" />
    	<form-property name="listeProjets" type="java.util.List" />			
    </form-bean>
    DynaActionForm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class RapportParametresForm extends DynaActionForm {
     
    private static final long serialVersionUID = 1L;
     
    public void reset(ActionMapping mapping, HttpServletRequest request)
    {
    this.set("listeProjets", ModelTools.getProjetList());
    // ModelTools.getProjetList() : renvoie une liste (type List) de bean de type 
    // Projet.
    } 	
    }
    Jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:select property="projets" multiple="multiple" size="10">
    <html:optionsCollection property="listeProjets"  value="Id" label="Nom"/>
    </html:select>

    par contre j'ai une remarque : comment il arrive à savoir ce qu'il y a dans "listeProjets". qd on ecrit :
    <html:optionsCollection property="listeProjets" value="Id" label="Nom"/>
    à mon avis, il faut indiquer qq part que la liste contient tel type d'objet.

    Merci !

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Les propriétés id et nom doivent commencer par une minuscule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="projets" multiple="multiple" size="10">
         <html:optionsCollection property="listeProjets"  value="id" label="nom"/>
    </html:select>
    Pour que cela fonctionne, ModelTools.getProjetList() doit renvoyer une List de beans Projet et la classe Projet doit avoir pour propriétés id et nom avec getters et setters.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    Je crois que je dois mettre des lunettes, c'est la première lettre en majuscule qui me causait le problème.
    merci, pour ces explications, mnt je peux utiliser les listes très proprement!
    sinon, pour le l'attribut "label", il ne peut pas prendre des valeurs autre que les attributs du bean ? dans mon cas par exemple le label doit contenir la concaténation de deux attributs du bean.

    Merci

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je pense que le plus simple serait de créer une nouvelle propriété dans la classe Projet qui contiendrait la concaténation des deux autres propriétés et que tu mettrais à jour via le constructeur.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private String id ;
    private String nom ;
    private String nom2 ;
    private String label ;
     
    public Projet(String id,String nom,String nom2)
    {
        this.id=id;
        this.nom=nom;
        this.nom2=nom2;
        this.label=nom+" "+nom2;
    }
    //getters et setters sur chaque propriété
    ...
    et pour constituer l'ArrayList, faire appel à ce constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ArrayList listeProjets = new ArrayList() ;
    listeProjects.add(new Projet("p01","projet 1","blablabla1");
    listeProjects.add(new Projet("p02","projet 2","blablabla2");
    et dans ta jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <html:select property="projets" multiple="multiple" size="10">
         <html:optionsCollection property="listeProjets"  value="id" label="label"/>
    </html:select>
    Ceci suppose bien sûr que tu as la possibilité de modifier le code de la méthode getProjetList() de ModelTools.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 67
    Par défaut
    oui, j'ai déjà pensé à cette solution, mais je voulais pas touché à la classe Projet. y ajouter un attribut juste pour un affichage d'une jsp, ça me parait pas trop propre, surtout que ma classe est persistante.
    du coup j'ai résolu le problème autrement :
    ça respecte pas struts à 100% mais ça m'evite de toucher à mon modèle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html:select property="projets" multiple="multiple" size="10">
    <logic:iterate id="t" name="rapportParametresForm" property="listeProjets">
    <bean:define id="prj" name="t" type="model.Projet" />
    <html:option value="<%= prj.getId().toString() %>">
    <%= prj.getNom()+" "+prj.getVersion() %>
    </html:option>
    </logic:iterate>
    </html:select>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment modifier une liste dans un dictionnaire?
    Par Mydriaze dans le forum Général Python
    Réponses: 1
    Dernier message: 06/08/2007, 19h57
  2. Comment trier une liste dans un DBLoukupComboBox
    Par soror dans le forum Bases de données
    Réponses: 6
    Dernier message: 17/07/2007, 20h13
  3. Comment initialiser une liste déroulante ?
    Par sergoi dans le forum Struts 1
    Réponses: 5
    Dernier message: 12/07/2007, 11h35
  4. COmment enregitrer une liste dans un fichier
    Par flo64 dans le forum Access
    Réponses: 13
    Dernier message: 14/06/2006, 10h07
  5. Comment initialiser une liste de composants avec une boucle ?
    Par EricSid dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/04/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo