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 :

[Struts-Layout] checkbox & collection


Sujet :

Struts 1 Java

  1. #1
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut [Struts-Layout] checkbox & collection
    Bonjour,

    Je sais que qq posts ont déjà été postés à ce sujet mais cela ne m'a pas aidé

    Je voudrais "simplement" afficher une liste sous forme de table (je veux dire par là, pas déroulante), et devant chaque 'ligne' un checkbox.
    Cela me permettra de rcupérer ttes les lignes cochées pour ensuite exécuter une action.
    Je regarde struts-layout mais pas moyen en jouant avec layout:collection.

    Qq pourrait-il regarder le code de test ci-dessous et me dire où je me plante ?

    La jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <layout:form action="/init.do">
    	<layout:collection name="users" styleClass="ARRAY" styleClass2="FORM2" 
    		selectProperty="id"
    		selectType="radio"
    		selectName="selection"> 
    		<layout:collectionItem title="Id" property="id"/> 
    		<layout:collectionItem title="Name" property="name"/> 
    		<layout:collectionItem title="Firstname" property="firstname"/> 
    	</layout:collection>
    </layout:form>
    Voici le code de génération de la liste, que je place ensuite en session.
    C'ets le code d'une action avant le chargement de la page jsp dont le code est ci-dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Collection list = new ArrayList();
     
    		for(int i=0;i<5;i++) {
    			Someone s = new Someone();
    			s.setName("name"+i);
    			s.setFirstname("firstname"+i);
    			s.setId(10-i);
    			list.add(s);
    		}
     
     
    		request.getSession().setAttribute("users", list);
    Et dans le ActionForm associé à ma page jsp j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private String[] selection;
    + getter & setter
    Et voici l'erreur qui apparaît :
    javax.servlet.ServletException: No getter method available for property users for bean under name org.apache.struts.taglib.html.BEAN

    Je dois mettre une propriété users dans l'ActionForm ?

    Help,
    Merci

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Dans l'Action, au lieu de mettre la collection dans le scope session comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		request.getSession().setAttribute("users", list);
    il vaut mieux initialiser le formulaire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setUsers(list) ;
    Ceci suppose que tu as défini la collection users dans l'ActionForm avec getter et setter et que dans le mapping de cette Action,dans le struts-config.xml, tu as codé name="nomDeTonFormBean",scope="session" et validate="false".

    Et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <layout:form action="/init.do">
    	<layout:collection property="users" styleClass="ARRAY" styleClass2="FORM2" 
    		selectProperty="id"
    		selectType="radio"
    		selectName="selection"> 
    		<layout:collectionItem title="Id" property="id"/> 
    		<layout:collectionItem title="Name" property="name"/> 
    		<layout:collectionItem title="Firstname" property="firstname"/> 
    	</layout:collection>
    </layout:form>

  3. #3
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut Merci mais ...
    Bonjour,

    Merci beaucoup, comme toujours ton aide fût très précieuse ... cela marche très bien (avec les radio).
    J'ai voulu ensuite changer et mettre des checkbox et là grrrr un autre problème qui survient :

    Avec ce code dans la jsp, j'ai un NullPointerException sur getIndexedProperty.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <layout:collection property="users" styleClass="ARRAY" styleClass2="FORM2" 
    		selectProperty="id"
    		selectType="checkbox"
    		selectName="selection"> 
    		<layout:collectionItem title="Id" property="id"/> 
    		<layout:collectionItem title="Name" property="name"/> 
    		<layout:collectionItem title="Firstname" property="firstname"/> 
    	</layout:collection>
    Avec selection qui est définit dans le même Form que users, comme un String[] (avec ses getter&setter)

    J'ai trouvé ce post : http://www.developpez.net/forums/sho...d.php?t=328137
    Et j'ai donc testé le truc de retirer le selectName et cela marche .... enfin cela s'affiche.
    As-tu déjà rencontré ce problème ?

    Merci

  4. #4
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Non, je n'ai pas eu ce problème.
    De quel type est la propriété id ?

  5. #5
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut
    C'est un int

    En fait ma Collection est faite su base d'une classe Someone composée de
    private int id;
    private String name;
    private String firstname;

    + getter & setter

  6. #6
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, je pensais justement que ta propriété id était de type int et que peut-être c'était cela qui posait problème.

    J'ai fait un test et je n'ai aucun problème avec un int en référençant dans l'attribut selectName une propriété de type String[].

    Je ne comprends pas ce qui ne va pas.

    Peux-tu quand même faire un test en rajoutant le selectName="selection" et en codant selectProperty="name" juste pour voir si tu as le même message d'erreur ?

  7. #7
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut Aaaaah
    Je crois que je le tiens ...

    J'ai initialisé le String[]selection= new String[10];

    Et la collection s'affiche

    As-tu dû initialiser le String[] dans ta classe Form ?

  8. #8
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Bien vu.

    Effectivement, j'ai bien initialisé le String[] mais dans l'Action qui initialise le formulaire en tenant compte de la taille de la collection.

    Dans ton cas, ça donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TonActionForm tonActionForm=(TonActionForm) form ;
    tonActionForm.setUsers(list) ;
    String[] selection = new String[list.size()];
    tonActionForm.setSelection(selection) ;

  9. #9
    vny
    vny est déconnecté
    Membre du Club
    Inscrit en
    Mai 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 74
    Points : 48
    Points
    48
    Par défaut Oui en effet
    c'ets ce que j'allais faire dans mon vrai projet.

    Là c'était juste pour tester à la barbare si c'était le prob.

    Merci beaucoup pour aide si précieuse et comem toujours bien efficace.

  10. #10
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    De rien.

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

Discussions similaires

  1. [Struts-Layout] Affichage de collection
    Par valkeke dans le forum Struts 1
    Réponses: 1
    Dernier message: 19/02/2010, 15h45
  2. [Struts-Layout] mettre une collection dans une div
    Par john_wili dans le forum Struts 1
    Réponses: 9
    Dernier message: 22/04/2009, 08h42
  3. [Struts-Layout] Différence entre collection et datagrid
    Par nabil148911 dans le forum Struts 1
    Réponses: 4
    Dernier message: 30/07/2007, 09h52
  4. [Struts-Layout] pager and collection, probleme avec sort
    Par chouchou93 dans le forum Struts 1
    Réponses: 22
    Dernier message: 27/06/2007, 13h34
  5. [Struts-Layout] layout:collection et checkbox
    Par Mayhem dans le forum Struts 1
    Réponses: 10
    Dernier message: 01/11/2006, 00h59

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