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][layout:tabs] attribut selectedTabKeyName en session


Sujet :

Struts 1 Java

  1. #21
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Action de l'onglet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    tabKey = (String)request.getSession().getAttribute("tabKey");
    		System.out.println("Session : " + tabKey);
     
    		if(tabKey != null)
    			request.getSession().removeAttribute("tabKey");
     
    //		Récupération de l'attribut selectedTabKeyName.
    		tabKey = request.getParameter("tabKey");
     
    		System.out.println("tabKey : " + tabKey);
    		request.getSession().setAttribute("tabKey", tabKey);
    Action du noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String tabKey = (String) request.getSession().getAttribute("tabKey") ;
    		System.out.println("TreebuildAction tabKey : " + tabKey);
     
    		if(tabKey != null)
    		{
    			TabsUtil.setCurrentTab("tabDetail",tabKey,request,response);
    		}
    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
    18
    19
    20
     
    <layout:tabs width="100%" selectedTabKeyName="tabDetail" styleClass="FORM">
     
    		<layout:tab key="Etat" href="tabs2.jsp?tabDetail=Etat" width="100" >
     
    				<iframe name="IFEtat" src="etatTab.do?tabKey=Etat" width="790" height="400" scrolling="yes" frameborder="0" align="bottom" 
    					style="background-color: #c0c0c0;">Le navigateur ne parvient pas à afficher 
    					la fenetre contenant l'arbre
    				</iframe>
     
    		</layout:tab>
     
    		<layout:tab key="Commandes" href="tabs2.jsp?tabDetail=Commandes" width="100">
     
    				<iframe name="IFCommandes" src="commandeTab.do?tabKey=Commandes" scrolling="yes" frameborder="0" align="bottom" 
    					width="790" height="400" style="background-color: #c0c0c0;">Le navigateur ne parvient pas à afficher 
    					la fenetre contenant l'arbre
    				</iframe>
     
    		</layout:tab>
    Une fois que je suis passé dans l'action du noeud, lorsque je clique sur un nouvel onglet, dans ma console il s'affiche toujours le nom du tab que j'ai sélectionné avant d'avoir cliqué sur le noeud.

  2. #22
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    lorsque je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setCurrentTab("tabDetail", tabKey, request, response);
    le tabKey est stocké dans un cookie? Il n' y a qu'en fermant le navigateur que je peux sélectionné a nouveau mes tab.

  3. #23
    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 david06600
    Une fois que je suis passé dans l'action du noeud, lorsque je clique sur un nouvel onglet, dans ma console il s'affiche toujours le nom du tab que j'ai sélectionné avant d'avoir cliqué sur le noeud.
    Comme je l'ai dit précédemment, il faut aussi coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabsUtil.setCurrentTab("tabDetail",tabKey,request,response);
    dans l'Action de chaque onglet, de manière à changer l'onglet courant lorsque tu cliques sur un nouvel onglet.

  4. #24
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Oui peut etre mais cela ne marchera pas. Regarde dans l'action des mes onglets, j'ai un system.out.println("tabKey " + tabKey); juste aprés le request.getParameter("tabKey");
    Et la en fait dans la sortie console je n'ai pas le tabKey correspondant à l'onglet sur lequel j'ai cliqué. Le tabKey reste le même que l'onglet que j'ai cliqué avant de passer dans l'action de mon noeud. Donc si le tabKey ne change lorsque je le récupère dans la requete, j'ai beau faire TabsUtils.setCurrentTab() sa ne changera pas. Ou il y a quelquechose que j'ai loupé ?

  5. #25
    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
    Et si, dans les Actions correspondant à chaque onglet, tu codes en dur la clé correspondant à chaque onglet à la place de tabKey :

    Soit, dans l'Action de path etatTab, la clé étant égal à Etat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabsUtil.setCurrentTab("tabDetail","Etat",request,response);
    et dans l'Action de path commandeTab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabsUtil.setCurrentTab("tabDetail","Commandes",request,response);

  6. #26
    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
    En fait, il y a quelque chose qui ne va pas dans ton code.

    Dans les Actions correspondant à chaque onglet, tu ne dois pas faire un getAttribute de tabKey mais seulement un getParameter et un setAttribute comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String tabKey = request.getParameter("tabKey");
    System.out.println("tabKey : " + tabKey);
    if ( tabKey != null) TabsUtil.setCurrentTab("tabDetail",tabKey,request,response) ;
    request.getSession().setAttribute("tabKey", tabKey);
    Ainsi, tu récupères la valeur de la clé correspondant à l'onglet sélecté (celle passée en paramètre de l'Action), tu spécifies que c'est l'onglet courant et tu mets cette valeur en session pour permettre de récupérer le dernier onglet sélecté dans les Actions correspondant aux noeuds du treeview.

    et donc, dans les Actions correspondant aux noeuds de ton treeview :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String tabKey = (String) request.getSession().getAttribute("tabKey") ;
    System.out.println("TreebuildAction tabKey : " + tabKey);
    if(tabKey != null)
    {
    	TabsUtil.setCurrentTab("tabDetail",tabKey,request,response);
    }
    Je pense que ça devrait fonctionner comme ceci, sans avoir à coder en dur les valeurs des clés correspondant à chaque onglet.

  7. #27
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Bien essayé, mais sa ne passe pas. En fait des qu'on appelle la méthode setCurrentTab, on ne peut plus rien changé aprés.

  8. #28
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Non sa ne fonctionne pas si je met un TabsUtil.setCurrentTab(...), en faisant cela j'ai toujours mon premier onglet qui reste affiché. Une fois que l'on a appelé la méthode setCurrentTab il n'est plus possible de changé. La seule solution est de fermer le navigateur, ce qui n'est pas une solution, mais bon une piste peut etre.

  9. #29
    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 comprends pas parce que je viens de faire le test et ça fonctionne très bien.

  10. #30
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Chez moi sa ne fonctionne pas. La je viens de mettre setCurrentTab(...) uniquement dans l'action de mes onglets, et je ne peux plus changé d'onglet une fois que le premier c'est affiché.

  11. #31
    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
    Voilà ce que j'ai codé :

    Dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <layout:tabs styleClass="FORM" width="400" selectedTabKeyName="tabKey">
    	<layout:tab key="Onglet1" href="tab1Action.do?tabKey=Onglet1">
    		<%@include file="tab1.jsp" %>
    	</layout:tab>
    	<layout:tab key="Onglet2" href="tab2Action.do?tabKey=Onglet2">
    		<%@include file="tab2.jsp" %>
    	</layout:tab>
    </layout:tabs>
    Dans les Actions des onglets, soient tab1Action et tab2Action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String tabKey = request.getParameter("tabKey") ;
    if ( tabKey != null) TabsUtil.setCurrentTab("tabKey",tabKey,request,response) ;
    request.getSession().setAttribute("tabKey", tabKey);
    Dans les Actions des noeuds du treeview :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String tabKey = (String) request.getSession().getAttribute("tabKey") ;
    if ( tabKey != null) TabsUtil.setCurrentTab("tabKey",tabKey,request,response) ;

  12. #32
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Oui je vois, j'ai encore différents essais, j'en vient à essayer tout et n'importe quoi, mais bon il ne veut rien savoir, une fois que j'ai appelé la méthode setCurrentTab(), le request.getParameter("tabKey") récupère toujours la même valeur de tab key. Je ne sais pas pourquoi....

  13. #33
    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 viens de m'apercevoir que, dans ta jsp, tu as un paramètre tabDetail passé aux jsp et un paramètre tabKey passé aux Actions.

    As-tu fait un test en donnant le même nom aux deux, soit celui affecté à la propriété selectedTabKeyName ?

  14. #34
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    En fait, en regardant ton code je me suis rendu compte que ma jsp était mal faite, voici mon code avec des modif inspiré de ton code :
    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
     
    <layout:tabs width="100%" selectedTabKeyName="tabKey" styleClass="FORM">
     
    		<layout:tab key="Etat" href="etatTab.do?tabKey=Etat" width="100" >
     
    				<iframe name="IFEtat" src="etat.jsp" width="790" height="400" scrolling="yes" frameborder="0" align="bottom" 
    					style="background-color: #c0c0c0;">Le navigateur ne parvient pas à afficher 
    					la fenetre contenant l'arbre
    				</iframe>
     
    		</layout:tab>
     
    		<layout:tab key="Commandes" href="commandeTab.do?tabKey=Commandes" width="100">
     
    				<iframe name="IFCommandes" src="commandes.jsp" scrolling="yes" frameborder="0" align="bottom" 
    					width="790" height="400" style="background-color: #c0c0c0;">Le navigateur ne parvient pas à afficher 
    					la fenetre contenant l'arbre
    				</iframe>
     
    		</layout:tab>
    et sa marche parfaitement maintenant. Encore merci a toi pour ton aide, et pour ta patience.

  15. #35
    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
    De rien.

    Ouf Je n'y croyais plus.
    Ca n'a pas été facile mais on y est arrivé.

    Bon courage pour la suite.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2009, 11h37
  2. Réponses: 6
    Dernier message: 22/06/2007, 16h51
  3. [Struts-Layout] Treeview - lowsrc attribute
    Par fbellavance dans le forum Struts 1
    Réponses: 8
    Dernier message: 07/03/2007, 23h14
  4. [Struts-Layout][layout:date] attribut property
    Par nikoo_27 dans le forum Struts 1
    Réponses: 9
    Dernier message: 02/11/2006, 15h38
  5. [Struts-Layout][layout:tabs] selectedTabKeyName
    Par david06600 dans le forum Struts 1
    Réponses: 1
    Dernier message: 27/10/2006, 21h50

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