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] problème avec layout:link


Sujet :

Struts 1 Java

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut [Struts-Layout] problème avec layout:link
    Bonjour
    J'ai un soucis avec layout:link.
    J'affiche une collection qui est une ArrayList d'objet Voiture qui comporte un 'id'.
    La commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:link action="/ajoutVoiturePanier" paramName="idVoiture" paramId="id" paramProperty="id">Ajouter à mon panier</layout:link>
    ne semble pas fonctionner, j'obtiens l'erreur suivante :
    javax.servlet.jsp.JspException: Cannot find bean: "idVoiture" in any scope
    A note qu'avec un html:link cela fonctionnait bien avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:link action="/ajoutVoiturePanier" paramName="idVoiture" paramProperty="id" paramId="id">Ajouter à mon panier</html:link>
    Voici mon code avec les layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <layout:pager maxPageItems="2" linksLocation="bottom" styleClass="PAGER">
       <layout:collection name="listVoiture" id="idVoiture" align="left" >
    	<layout:collectionItem title="">
    	   <layout:img src="${voiture.photo}" width="130" height="100"/>
    	</layout:collectionItem>
    	<layout:collectionItem property="marque"/>
    	<layout:collectionItem property="modele"/>
    	<layout:link action="/ajoutVoiturePanier" paramName="idVoiture" paramId="id" paramProperty="id">Ajouter à mon panier</layout:link>
       </layout:collection>
     </layout:pager>

  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
    Attention, tu as mis id="idVoiture" dans le tag layout:collection et ensuite tu utilises voiture dans l'EL ${voiture.url} dans le tag layout:img.
    Soit c'est idVoiture soit voiture mais pas les deux.

    Sinon, il faut mettre le tag layout:link dans un layout:collectionItem, comme pour le tag layout:img :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <layout:pager maxPageItems="2" linksLocation="bottom" styleClass="PAGER">
       <layout:collection name="listVoiture" id="voiture" align="left">
    	<layout:collectionItem title="">
    	   <layout:img src="${voiture.photo}" width="130" height="100"/>
    	</layout:collectionItem>
    	<layout:collectionItem property="marque"/>
    	<layout:collectionItem property="modele"/>
    	<layout:collectionItem title="">
     	   <layout:link action="/ajoutVoiturePanier" paramName="voiture" paramId="id" paramProperty="id">
        	      Ajouter à mon panier
     	   </layout:link>
    	</layout:collectionItem>
       </layout:collection>
     </layout:pager>
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    ca marche bcp mieux merci!!
    En découle un autre soucis : quand je suis a la page 3 et que j'ajoute a mon panier la voiture affichée, il me ramene a la page 1. Est ce normal? Ne peut on pas rester dans la page 3?

    Ma page jsp est dans le body d'un tile.

  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
    Je crois qu'il faut ajouter l'attribut sessionPagerId dans le tag layout:pager.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    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, c'est bien cela.

    Dans le tag <layout:pager>, tu ajoutes l'attribut sessionPagerId en lui donnant comme valeur le nom de la variable de session qui contiendra le numéro de page.

    Par exemple, tu appelles la variable pagerId comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:pager maxPageItems="2" sessionPagerId="pagerId" linksLocation="bottom" styleClass="PAGER">
    et dans l'Action qui s'exécute avant l'affichage de la jsp, tu mets en session la variable pagerId avec pour valeur 0 (qui correspond à la page 1), ce qui signifie qu'il affichera la première page par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().setAttribute("pagerId","0") ;
    et ensuite, Struts-Layout va gérer automatiquement la mise à jour de cette variable en fonction de la page sur laquelle tu auras cliqué.

    Donc, si tu cliques sur la page 3, il mettra à jour la variable pagerId en session avec la valeur 2 (qui correspond à la page 3) et donc, quand tu cliqueras sur le lien pour ajouter à ton panier la voiture affichée, il reviendra automatiquement à la page 3.
    Modératrice Java - Struts, Servlets/JSP, ...

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Après recherche sur le net j'ai trouvé cette solution :
    Avant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:pager maxPageItems="2" styleClass="PAGER" sessionPagerId ="currentPage">
    mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <%
    if (session.getAttribute("currentPage")==null)
    {session.setAttribute("currentPage","0");}
    %>
    Je ne comprends pas trop ce que ça fait, mais ça marche...!

  7. #7
    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
    Citation Envoyé par tomy29 Voir le message
    Je ne comprends pas trop ce que ça fait, mais ça marche...!
    Je viens juste de te l'expliquer. Regarde mon précédent message.

    EDIT : Mets plutôt le code qui permet de mettre en session la page courante dans l'Action qui s'exécute avant l'affichage de la jsp.
    Modératrice Java - Struts, Servlets/JSP, ...

  8. #8
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Super!
    Petit à petit j'avance dans ma mini appli...
    Merci!

  9. #9
    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
    As-tu compris le fonctionnement du sessionPagerId ?

    Que ça avance, c'est bien mais encore faut-il comprendre ce que l'on fait.
    Modératrice Java - Struts, Servlets/JSP, ...

  10. #10
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    Par défaut
    Oui c'est bon, je pige le principe, maintenant que je sais que Struts-layout gère presque tout...!

  11. #11
    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
    Ok parfait.
    Modératrice Java - Struts, Servlets/JSP, ...

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

Discussions similaires

  1. [struts-layout] Problème avec <layout:link>
    Par jadey dans le forum Struts 1
    Réponses: 1
    Dernier message: 22/09/2011, 14h00
  2. [Struts-Layout] problème avec layout :number
    Par john_wili dans le forum Struts 1
    Réponses: 0
    Dernier message: 10/02/2009, 17h40
  3. [Struts-Layout] problème avec <layout:swap>
    Par john_wili dans le forum Struts 1
    Réponses: 3
    Dernier message: 15/11/2008, 00h21
  4. [Struts-Layout] problème avec layout:collection
    Par khayri dans le forum Struts 1
    Réponses: 4
    Dernier message: 31/05/2007, 13h28
  5. [Struts-Layout] problème avec layout:datagrid
    Par khayri dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/04/2007, 09h31

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