Bonjour, est il possible de gardé l'attribut key du tag layout:tab en session ? si oui comment faire ?
Merci
Bonjour, est il possible de gardé l'attribut key du tag layout:tab en session ? si oui comment faire ?
Merci
ou plutot l'attribut selectedTabKeyName.
Merci
Salut,
D'après la doc Struts-Layout, ce n'est pas possible :
Pourquoi as-tu besoin de le mettre en session ?fr.improve.struts.taglib.layout.util.TabsUtil.setCurrentTab(selectedTabKeyName, key, request, response)
Salut, ben en fait j'ai des onglets, layout:tabs, et j'ai un arbre. Lorsque je clique sur un élément de l'arbre cela m'affiche des informations dans mes onglets. J'ai une série de plusieurs onglets, log, erreur, etc....Lorsque je clique sur un élément de mon arbre qui possède un identifient j'ai les bonnes infos correspondant au noeud qui sont affiché dans mes onglets. Le problème c'est qu'a chaque fois que je clique sur un noeud de l'arbre, c'est le premier tab qui se réaffiche a chaque fois. Je voudrais pouvoir rester sur le tab ou j'était avant d'avoir cliqué sur le noeud. Par exemple je suis sur l'onglet log, j'affiche les log correspondant à un noeud. Je voudrais voir ensuite les logs correspondant à un autre noeud, mais lorsque je clique sur le noeud je revient sur le premier tab si mes tabs sont dans cet ordre erreur, log, je reviendrai sur l'onglet erreur a chaque fois que je clique sur un noeud de l'arbre.
Tu m'as compris en gros ?
Merci
Imaginons que tu aies ceci dans la jsp :
dans onglet1Action et onglet2Action, tu pourrais coder ceci :
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="tab"> <layout:tab key="onglet1" href="onglet1Action.do?tabKey=onglet1"> <%@include file="tab1.jsp" %> </layout:tab> <layout:tab key="onglet2" href="onglet2Action.do?tabKey=onglet2"> <%@include file="tab2.jsp" %> </layout:tab> </layout:tabs>
et dans chaque Action correspondant à chaque noeud :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String tabKey= request.getParameter("tabKey") ; request.getSession().setAttribute("tabKey",tabKey) ;
Ainsi, tu te positionnes toujours sur le dernier onglet sélectionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String tabKey = (String) request.getSession().getAttribute("tabKey") ; if ( tabKey != null) { TabsUtil.setCurrentTab("tab",tabKey,request,response) ; }
A tester. Je pense que ça devrait fonctionner.
C'est curieux, par défaut, si tu réaffiches la même page, il se repositionne sur le dernier onglet quitté avec :
<layout:tabs .... selectedTabKeyName="groupeTab">
...
</layout:tabs>
Bien sûr, groupeTab doit être un nom unique (si tu as le même nom sur plusieurs pages, ça va poser problème...)
Sinon, la solution de c_nvy devrait fonctionner
A+
Dans ton code selectedTabKeyName ne devrait pas être tabKey aussi ?
Lorsque je fait request.getParameter("tabKey") ensuite je fais un System.out.println(tabKey), j'ai null.
Tu as quelle version de Struts-Layout ?
J'ai la dernière version.
Je pense que cela vient du fait qu'au niveau le plus haut j'ai déja 2 onglets.C'est curieux, par défaut, si tu réaffiches la même page, il se repositionne sur le dernier onglet quitté avec :
un onglet Général et un onglet Détail.
Dans l'onglet Détail j'ai mon arbre et mes autres onglets. Lorsque je clique sur un noeud de mon arbre, l'action forward sur "maJsp.jsp?tab=Détail"
Ce n'est pas incompatible, du moment que tu as 2 noms différents pour l'attribut "selectedTabKeyName"
Il positionne l'information dans le request et dans un cookie, donc, normalement, tu te retrouves dans le dernier onglet (à moins d'utiliser TabsUtil.setCurrentTab(...) entre temps, bien sûr...)
A+
Maintenant j'ai deux noms différents : j'ai essayé de récupéré dans l'action de mon onglet avec request.getParameter("tabKey"); mais lorsque je veux afficher la String j'ai null...
Mes tab sont constitué de cette façon est ce que cela peut etre la cause de mon problème :
cette page jsp est elle même contenu dans un iframe.
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="tabs2.jsp?tabKey=Etat" width="100" > <iframe name="IFEtat" src="etatTab.do" 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?tabKey=Commandes" width="100"> <iframe name="IFCommandes" src="commandeTab.do" 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> .....
C'est dans les Actions qu'il faut passer le paramètre tabKey.
Essaie comme 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
15 <layout:tabs width="100%" selectedTabKeyName="tabKey" styleClass="FORM"> <layout:tab key="Etat" href="tabs2.jsp" 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" 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> ... <layout:tabs>
Salut c_nvy, merci pour ta correction c'est vrai que l'a je passe bien en paramètre la valeur de tabKey \o/, mais si l'on ne précise pas dans href de layout:tab le tabKey on ne peut pas changer de tab. Donc il faut passer la valeur à l'action et aussi dans l'attribut href. Enfin encore une fois un grand merci a toi pour ton aide et ta patience dans certain cas (Je te dois au moins un resto. LoL).
Bon a +
Juste une derniere question :
dans l'action des tree node quand tu met if(tab!=null) tab représente quoi. C'est une valeur récupérée d'ou ?
Merci
Donc maintenant je n'arrive plus a changé de tab lol, je suis pas sorti de l'auberge. Une fois que je passe dans l'action des treenode plus moyen de changer de tab, a moin de fermer le navigateur. Je n'ai pas besoin de redémarrer le serveur, juste fermeture du navigateur suffit a ce que je puisse a nouveau changé de tab. J'ai pourtant pris soion de retirer de la session l'attribut tabKey dans toutes mes actions. T'aurais une idée ?
Salut !Envoyé par david06600
Désolée, c'est une erreur de ma part. C'est parce que j'ai changé le nom de la variable tab en tabKey et j'ai oublié de la modifier dans le if.
Ok merci j'avais corrigé dslé d'avoir posté pour sa.
Je pense qu'il faut coder ceci :Envoyé par david06600
dans chacune des Actions des noeuds et aussi dans chacune des Actions des onglets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TabsUtil.setCurrentTab("tab",tabKey,request,response) ;
Est-ce bien ce que tu as fait ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager