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 :

logic iterate en cascade


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut logic iterate en cascade
    Bonjour à tous,

    J'envoie à ma JSP une liste que j'appelle pour l'exemple specialiteList.
    C'est une liste de bean qu'on appelera pour l'exemple specialiteBean.
    specialiteBean possède tout un tas de propriétés dont une qu'on appelera substituteList qui n'est autre qu'une liste de specialiteBean.

    Le décor est planté:

    Dans ma jsp je commence donc par une itération sur specialiteList.
    J'affiche des données puis je teste si substituteList n'est pas null.
    Si c'est le cas alors je boucle sur substituteList, j'affiche ces mêmes données puis je dois à nouveau testé si substituteList n'est pas null pour encore et encore bouclé.

    Techniquement ca donne ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <logic:iterate id="specialite" name="specialiteList">
      //affichage de proerties
      //test si substituteList existe
      <logic:iterate id="specialiteSub" name="specialite" property="substituteList">
        //affichage de properties
        //test encore si substitutList existe
        <logic:iterate id="specialiteSubSub" name="specialiteSub" property="substituteList">
             //et la ca peut durer longtemps
        </logic:iterate>
      </logic:iterate>
    </logic:iterate>
    Ma question est donc la suivante : (déjà j'espère que vous avez bien compris)
    Dans ca cas, il est possible presque que je boucle à l'infini, mais je ne peut évidemment pas mettre un nombre un infini de ligne de code (ma pauvre JSP), surtout je ne sais pas combien d'itération je dois attendre.

    Donc y a t'il une solution dans ce cas la?

  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
    Alors, il doit y avoir une solution en créant deux jsp et en incluant la deuxième dans chacune d'elle.

    Par exemple, specialite.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:present name="specialiteList">
       <logic:iterate name="specialiteList" id="specialite">
    	<bean:write name="specialite" property="proprieteSpecialite"/>
    	<bean:define name="specialite" id="specialite" toScope="request"/>
    	<jsp:include page="substitute.jsp"/>
       </logic:iterate>
    </logic:present>
    et substitute.jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:present name="specialite" property="substituteList">
       <logic:iterate name="specialite" property="substituteList" id="substitute">
    	<bean:write name="substitute" property="proprieteSubstitute"/>
    	<bean:define name="substitute" id="specialite" toScope="request"/>
    	<jsp:include page="substitute.jsp"/>
       </logic:iterate>
    </logic:present>
    A tester et si ça fonctionne, voir ce que ça donne côté performance.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 76
    Par défaut
    je crois que dans le sustitue.jsp tu dois inclure le specialiste.jsp. non ?

  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
    Citation Envoyé par fangriz Voir le message
    je crois que dans le sustitue.jsp tu dois inclure le specialiste.jsp. non ?
    Non, pas du tout, puisque c'est sur la liste substituteList que l'on doit boucler x fois.

  5. #5
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Bonjour,
    Tout d'abord merci de vous êtes penché sur mon problème.

    Je dois mettre en stand by ce problème pour me pencher sur un autre pour la journée, donc je ne testerai pas votre solution avant la fin de journée ou demain.

    Je vais étudier votre solution pour voir si je peut la mettre en œuvre dans ce projet.
    Je vous tiens bien évidemment informé des avancées.
    Merci!

  6. #6
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Re,
    J'ai pu essayer votre solution malheureusement ca ne fonctionne pas.
    le <bean:define> avant de passer à la seconde jsp semble pourtant être pris en compte (pas d'erreur "cannot find bean in any scope") mais rien ne s'affiche.
    Mais si je retire le <logic:present> en début de la seconde jsp, boom j'ai un stackoverflow!!

    Je pense que je vais faire un pas en arrière pour mieux avancer.

    Un vieux sage m'a dit un jour "Si la gestion de l'affichage devient trop compliqué, il faut retoucher le code en amont" (pour avoir un bean d'affichage le plus simple possible)

    Je pense qu'il faut que je l'écoute aujourd'hui!
    Si vous avez tout de même une idée de ce côté la je pourrai l'essayer tout de même sinon je passerai le post en résolu!!

    Merci à vous!!

  7. #7
    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
    As-tu pensé à mettre les directives taglib qui référencent les tld de Struts au début des deux jsp ?

  8. #8
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Oui les taglibs sont présentes sur les deux JSP.

  9. #9
    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
    C'est bizarre parce que je l'ai expérimenté et ça fonctionne très bien.
    Tu es sûr que tu ne t'es pas trompé dans les name et les id ?

    Enfin, sinon, si tu as un stackoverflow, ce n'est pas bon signe.
    Je me doutais un peu que cela pouvait poser problème.

    En fait, ça ressemble un peu à un treeview non ?

  10. #10
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Non il n'y a pas d'erreur de name ou d'id.
    Et non ce n'est pas un treeview.
    Certes, l'affichage de certains éléments s'y apparente un peu mais je ne vai pas me lancer dans la construction d'un treeview pour dans certains cas ne pas l'afficher!

  11. #11
    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 poster ton code ?

  12. #12
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Les JSP???..., ca fait un gros paquet, j'enlève le superflu!!

  13. #13
    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 lextaz33 Voir le message
    Les JSP???..., ca fait un gros paquet, j'enlève le superflu!!
    oui, il faudrait poster juste la mécanique avec l'include et les boucles sur les listes.

  14. #14
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    JSP n°1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <logic:iterate id="specialite" name="patient" property="specialitesList">
    	<bean:define name="specialite" id="specialite" toScope="request"/>
    	<jsp:include page="preparationDJINPickingPreview2.jsp"/>
    </logic:iterate>
    JSP n°2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:present name="specialite" property="listElementSubstitue">				
    	<logic:iterate id="specialiteSub" name="specialite" property="listElementSubstitue">
    		<bean:define name="specialiteSub" id="specialite" toScope="request"/>
    		<jsp:include page="preparationDJINPickingPreview2.jsp"/>		
    	</logic:iterate>
    </logic:present>

  15. #15
    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
    C'est correct.
    Je ne comprends donc pas pourquoi ça ne fonctionne pas chez toi.
    Tu ne vois rien d'anormal quand tu affiches le code html généré de la page ?
    Les tags Struts sont bien interprétés ?

  16. #16
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    aaaahhh f***!!
    Désolé!
    En fait un <bean:write> caché dans un <logic:equal> avait gardé comme name celui de la JSP n°1!!!

    Je suis désolé..!!

    Anyway, ca ne change rien, le résultat est le même qu'avant.

  17. #17
    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 lextaz33 Voir le message
    Anyway, ca ne change rien, le résultat est le même qu'avant.
    C'est à dire ? rien ne s'affiche ? ou tu as un StackOverflow ?

  18. #18
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Nan, c'est à dire que c'est le même résultat avec ou sans votre solution!

    Avant, je faisais une boucle sur ma substitueList, en sachant que je n'avais qu'une itération. (pas de substitueList dans une substituteList)

    Alors j'ai ajouté une deuxième itération pour qu'un élément d'une substitueList ait une substitueList.

    Or le résultat n'est pas ce que j'attend (ce serait trop facile), mais tout mes éléments sont tout de même affiché alors que je ne pensais pas que ce serais le cas.

    (Je sais pas si vous me suivez même moi j'me perdrais dans ces explications, si vous voulez un petit brief sur les specs dites moi)

    En gros je pensais que mon code JSP n'afficherai qu'une itération au cas ou il y en ai plus d'une mais en fait non.
    Donc finalement, je me retrouve au point de départ.

  19. #19
    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
    Euh là, j'ai dû mal à te suivre.
    J'avais compris que tu souhaitais afficher tous les éléments sans être obligé de coder autant de logic:iterate qu'il y a de sous-listes.
    Et là, tu me dis que tu ne veux afficher qu'une itération.
    Désolée mais là, je ne comprends pas ton besoin.

  20. #20
    Membre confirmé Avatar de lextaz33
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 169
    Par défaut
    Non je me suis surement mal exprimé!

    Simplement, j'expliquais que l'on affiche bien N itérations mais que je ne m'attendais pas à ce résultat pour une questions d'affichages.

    En fait le post est résolu.

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

Discussions similaires

  1. Imbriquer des logic:iterate
    Par lalou33 dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/06/2004, 10h31
  2. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39
  3. [EJB2.1 Entity] [BMP] [Struts] Problème avec <logic:iterate>
    Par romain3395 dans le forum Java EE
    Réponses: 2
    Dernier message: 07/06/2004, 10h12
  4. [struts][iterate] problème logic:iterate avec un Vector
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 9
    Dernier message: 31/03/2004, 18h05
  5. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 14h42

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