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 :

Pb d'affichage avec des logic:iterate imbriqués


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Points : 55
    Points
    55
    Par défaut Pb d'affichage avec des logic:iterate imbriqués
    Bonjour,

    Dans une jsp, j'imbrique deux logic:iterate.
    Le 1er permet de m'afficher toutes les infos de toute une liste d'objets.
    Pour chacun de ces objets, il faut que j'affiche des photos s'il y en a.
    J'ai donc un vecteur contenant mes photos pour chaque objet.
    Mon problème c'est qu'à l'affiche pour chaque objet, j'ai le vecteur des photos qui s'affiche et non les photos.

    Je vous détaille avec un peu de code.
    Mon action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // je boucle pour chaque objet
          for (int i = 0; i < results.resultsSize(); i++) {
                ProductObject fac = new ProductObject();
                fac = (ProductObject) results.getResults().elementAt(i);
                fac.executeQueryAll(conn);
                tempFac.add(fac);
                ProductPhotos pho = new ProductPhotos();
                pho.executeQueryPhoto(conn, fac.getGcKey());
                tempPho.add(pho.getPhotos());
                // J'attribue à mon objet fac le vector contenant le nom des photos
                fac.setAllProductPhoto(tempPho);
            }
            results.setAllProduct(tempFac);
            request.setAttribute("results", results);
    Et ma jsp
    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
    <jsp:useBean id="results" class="fr.mbx.inventaire.product.ProductResults" 
    	scope="session" />
     
    <logic:iterate id="product" name="results" property="allProduct">
    <table width="650" summary="">
    	...
    	//affichage de mes valeurs
    <table>
    <tr>
    	<logic:iterate id="photo" name="product" property="allProductPhoto" >
    		<td><a href="file:///<bean:write name="photo" />">
    			<img src="file:///<bean:write name="photo" />" alt="">
    		</a></td>
    	</logic:iterate>
    </tr>
     
    </logic:iterate>

  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
    Ben, si j'ai bien tout compris, il faut attribuer à ton objet fac le vector contenant le nom des photos avant de l'ajouter dans ta liste tempFac.

    Donc, code ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fac.setAllProductPhoto(tempPho);
    avant ceci :

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    C'est ce que j'ai fait dans mon action!!!

  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
    Ben non.

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // je boucle pour chaque objet
          for (int i = 0; i < results.resultsSize(); i++) {
                ProductObject fac = new ProductObject();
                fac = (ProductObject) results.getResults().elementAt(i);
                fac.executeQueryAll(conn);
                tempFac.add(fac);
                ProductPhotos pho = new ProductPhotos();
                pho.executeQueryPhoto(conn, fac.getGcKey());
                tempPho.add(pho.getPhotos());
                // J'attribue à mon objet fac le vector contenant le nom des photos
                fac.setAllProductPhoto(tempPho);
            }
            results.setAllProduct(tempFac);
            request.setAttribute("results", results);
    fac.setAllProductPhoto(tempPho) se trouve après l'ajout dans la liste via tempFac.add(fac).

    Il faudrait faire 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
    // je boucle pour chaque objet
          for (int i = 0; i < results.resultsSize(); i++) {
                ProductObject fac = new ProductObject();
                fac = (ProductObject) results.getResults().elementAt(i);
                fac.executeQueryAll(conn);
                ProductPhotos pho = new ProductPhotos();
                pho.executeQueryPhoto(conn, fac.getGcKey());
                tempPho.add(pho.getPhotos());
                // J'attribue à mon objet fac le vector contenant le nom des photos
                fac.setAllProductPhoto(tempPho);
                tempFac.add(fac);
            }
            results.setAllProduct(tempFac);
            request.setAttribute("results", results);
    Il faut mettre à jour l'objet fac avec le vector contenant le nom des photos et ensuite, ajouter l'objet fac dans la liste.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    C'est vrai que c'était plus logique dans ce sens.
    Mais c'est toujours pareil....

  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
    Quand tu fais Affichage -> Source sur ta jsp, peux-tu me dire ce que tu obtiens pour ces lignes-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	<logic:iterate id="photo" name="product" property="allProductPhoto" >
    		<td><a href="file:///<bean:write name="photo" />">
    			<img src="file:///<bean:write name="photo" />" alt="">
    		</a></td>
    	</logic:iterate>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    J'obtiens tout le vecteur de photos pour chaque objet et à chaque fois...

    Voici juste un exemple sur 2 objets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <td><a href="file:///[//Photos/Section%20CX/Ilot%20CX_1679/17-NB1-CX0103-01.jpg]">
    			<img src="file:///[//Photos/Section%20CX/Ilot%20CX_1679/17-NB1-CX0103-01.jpg]" alt="">
    		</a></td>
     
    		<td><a href="file:///[//Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-01.jpg, //Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-02.jpg, //Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-03.jpg, //Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-04.jpg]">
    			<img src="file:///[//Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-01.jpg, //Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-02.jpg, //Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-03.jpg, //Photos/Section%20CV/Ilot%20CV_1242/117-NB1-CV0017-04.jpg]" alt="">
    		</a></td>

  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
    Ah, c'est bon, je crois que j'ai compris ce qui ne va pas.

    Il faut créer l'instance tempPho du vecteur de photos dans la boucle.
    Pour chaque objet fac, il faut créer un nouveau vecteur de photos.
    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
    // je boucle pour chaque objet
          for (int i = 0; i < results.resultsSize(); i++) {
                ProductObject fac = new ProductObject();
                fac = (ProductObject) results.getResults().elementAt(i);
                fac.executeQueryAll(conn);
                tempFac.add(fac);
                ProductPhotos pho = new ProductPhotos();
                pho.executeQueryPhoto(conn, fac.getGcKey());
                Vector tempPho = new Vector() ;
                tempPho.add(pho.getPhotos());
                // J'attribue à mon objet fac le vector contenant le nom des photos
                fac.setAllProductPhoto(tempPho);
            }
            results.setAllProduct(tempFac);
            request.setAttribute("results", results);
    Il y a peut-être même plus simple.
    Que te renvoie pho.getPhotos() ?
    Si c'est un vecteur, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // je boucle pour chaque objet
          for (int i = 0; i < results.resultsSize(); i++) {
                ProductObject fac = new ProductObject();
                fac = (ProductObject) results.getResults().elementAt(i);
                fac.executeQueryAll(conn);
                tempFac.add(fac);
                ProductPhotos pho = new ProductPhotos();
                pho.executeQueryPhoto(conn, fac.getGcKey());
                 // J'attribue à mon objet fac le vector contenant le nom des photos
                fac.setAllProductPhoto(pho.getPhotos());
            }
            results.setAllProduct(tempFac);
            request.setAttribute("results", results);

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 105
    Points : 55
    Points
    55
    Par défaut
    Génial, ça marche!!!
    Je ne sais pas pourquoi je me suis pris la tête avec un vecteur de plus...

    Merci beaucoup de ton aide

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

Discussions similaires

  1. [Iterate] rowspan dynamique avec 3 logic:iterate imbriqués
    Par txomin.patalagoïty dans le forum Struts 1
    Réponses: 0
    Dernier message: 10/12/2013, 21h41
  2. [MySQL] Probleme d'affichage avec des checkbox
    Par napz dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 08/11/2006, 14h43
  3. [Struts]personnaliser l'affichage avec des tags
    Par adrien.nicolet dans le forum Struts 1
    Réponses: 1
    Dernier message: 30/10/2005, 19h32
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Imbriquer des logic:iterate
    Par lalou33 dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/06/2004, 10h31

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