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 1.3.5] ArrayList et itérations dans une JSP


Sujet :

Struts 1 Java

  1. #1
    cis
    cis est déconnecté
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut [Struts 1.3.5] ArrayList et itérations dans une JSP
    Bonjour,

    jusqu'à présent, en utilisant la version 1.2.7 de Struts, il était possible de créer des ArrayList (de String, ou de Beans) et de les itérer dans une JSP à l'aide de <logic:iterate>
    Les données s'affichaient correctement.

    Avec la version 1.3.5, l'itération s'effectue bien, mais les données ne s'affichent plus.

    Est-ce encore possible de procéder ainsi ?
    Y a t-il besoin de créer des getters et setters indexés comme pour les <nested-iterate> ?


    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
    Peux-tu montrer le code du logic:iterate ?

  3. #3
    cis
    cis est déconnecté
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut
    Bien sûr

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <logic:iterate name="groupes" id="groupe">
    	<br>
     
    	<table>
    		<caption>
    			&nbsp;&nbsp;
    			<bean:write name="groupe" property="codeGroupeApplication"/>
    			&nbsp;-&nbsp;
    			<bean:write name="groupe" property="libelleGroupeApplication"/>
    		</caption>
     
    		<tr>
    			<td>
    				<br>
    				<logic:iterate name="groupe" property="applications" id="app">
    					&nbsp;&nbsp;
    					<html:link page="/accesApplication.do?dispatch=Acces" paramName="app" paramProperty="codeApplication" paramId="codeApplication" target="_blank">
    						<bean:write name="app" property="codeApplication"/>
    						&nbsp;-&nbsp;
    						<bean:write name="app" property="libelleApplication"/>
    					</html:link>
    					<br>
    				</logic:iterate>
    				<br>  
    			</td>
    		</tr>
    	</table>
    </logic:iterate>
    Voici également l'erreur incrite dans la console :

    javax.servlet.jsp.JspException: No getter method for property: "applications" of bean: "groupe"

    A noter que mon bean "groupes" placé en session contiens bien des données, j'ai effectué une sortie console juste avant le "findForward"...

  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
    groupes est bien une collection de beans dont la propriété qui a pour nom applications est de type Collection ?

  5. #5
    cis
    cis est déconnecté
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut
    Tout à fait.

    En fait, on a une ArrayList "groupes" contenant des beans "applications".

    Mis ce bean "application" n'est pas de type collection. C'est un bean tout ce qu'il y a de plus normal...

  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
    Ce que tu me dis n'est pas logique.
    Tu ne peux pas itérer sur un bean mais sur une liste de beans.

    Donc applications est obligatoirement une collection (par exemple une ArrayList) de beans Application.

    D'après le code que tu as posté, tu dois avoir une ArrayList groupes de beans, que j'appellerai GroupeApplication.
    Ce bean, GroupeApplication, a pour propriétés codeGroupeApplication, libelleGroupeApplication et applications.
    applications est une ArrayList de beans, que j'appellerai Application.
    Ce bean, Application, a pour propriétés codeApplication et libelleApplication.

    Si ce n'est pas le cas, pour moi, le code de la jsp ne peut pas fonctionner tel quel.

  7. #7
    cis
    cis est déconnecté
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut
    Citation Envoyé par c_nvy
    Ce que tu me dis n'est pas logique.
    Tu ne peux pas itérer sur un bean mais sur une liste de beans.

    Donc applications est obligatoirement une collection (par exemple une ArrayList) de beans Application.

    D'après le code que tu as posté, tu dois avoir une ArrayList groupes de beans, que j'appellerai GroupeApplication.
    Ce bean, GroupeApplication, a pour propriétés codeGroupeApplication, libelleGroupeApplication et applications.
    applications est une ArrayList de beans, que j'appellerai Application.
    Ce bean, Application, a pour propriétés codeApplication et libelleApplication.

    Si ce n'est pas le cas, pour moi, le code de la jsp ne peut pas fonctionner tel quel.
    Oui, tu as tout compris, ce que je disais n'était que pure aneries...
    Pour trouver l'origine du problème, je me suis limité à un seul logic:iterate (celui du groupe) en laissant le second (celui nommé applications).

    Le premier logic:iterate (groupe) marche bien. C'est le second qui pose problème...
    Mais là, c'est plus la logique qui est en cause, pas Struts...

  8. #8
    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 ne vois pas d'erreur de logique dans le code de ta jsp.

    Je n'ai pas encore testé la 1.3.5 de Struts mais ça vaudrait peut-être le coup d'essayer de remplacer les tags logic:iterate par nested:iterate, sans rajouter quoi que ce soit dans les ActionForm.
    Les tags nested sont particulièrement adaptés à ton cas.
    Par contre, il ne faut pas oublier de rajouter la directive taglib qui pointe sur la tld nested dans la jsp.

  9. #9
    cis
    cis est déconnecté
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 12
    Par défaut
    Merci c_nvy de t'être penchée sur le problème...

    J'ai trouvé la solution, si ça peut intérresser quelqu'un :

    jusqu'à présent, nous étions forcé d'indexer des getters et setters dans les beans, notamment pour les <nested:iterate>

    En supprimant ces getters et setters indexés, tout fonctionne correctement...

    Je ne suis pas un utilisateur de Struts sufisemment averti pour expliquer pourquoi...

  10. #10
    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
    Citation Envoyé par cis
    jusqu'à présent, nous étions forcé d'indexé des getters et setters dans les beans, notamment pour les <nested:iterate>
    C'est bizarre parce que le principal atout des tags nested, c'est justement de ne pas avoir à coder getters et setters indexés.

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

Discussions similaires

  1. Comment sauter une itération dans une boucle ?
    Par Kaeguri dans le forum Fortran
    Réponses: 3
    Dernier message: 20/04/2007, 13h30
  2. [JSF]Affichage de beans depuis une ArrayList dans une JSP
    Par adrien.nicolet dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 05/06/2006, 18h33
  3. Réponses: 3
    Dernier message: 22/05/2006, 10h58
  4. Struts - Javascript dans une jsp
    Par mariemor64 dans le forum Struts 1
    Réponses: 9
    Dernier message: 20/04/2006, 13h48
  5. [struts][jsp]Inclusion dans une jsp
    Par GreenJay dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/06/2004, 12h43

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