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

JSF Java Discussion :

garder l'état d'un tree menu


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut garder l'état d'un tree menu
    slt à tous,

    j'ai un tree menu (avec richfaces) qui renvoie vers d'autres pages lorsque je clic sur ses nœuds,
    mon problème est que je veux garder à chaque nouvelle page l'état du tree (je veux que le nœud sur lequel j'ai cliqué soit affiché)
    je sais que je dois utiliser l'attribut componentState du tree, mais je ne sais pas vraiment comment faire??
    Si quelqu'un peut m'expliquer comment l'utiliser je serrai ravie,

    Merci d'avance pour votre aide,

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    je pense si tu fais un binding sur le tree, tu pourrais gérer çà..

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    tu pourras peut être m'expliquer à quoi ça serre le binding et comment l'utiliser?? je n'ai pas vraiment compris son utilisation d'après la discription que j'ai trouver dans la doc des tag richfaces: docs/tlddoc/rich/tree.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    binding: 
    Description:	The attribute takes a value-binding expression for a component property of a backing bean
    Merci

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    peut être il y'a plus simple

    essaye avec

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    si je mets ou mon tree ne s'ouvre plus
    voici mon tree
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <rich:tree 
    				id="tree"
    				style="width:300px"
    				switchType="client"
    				var="item"
    				value="#{menu1.treeNode}"
    				nodeFace="#{item.var!=null ? 'leaf' : 'node'}"
    				ajaxKeys="#{null}"
    				ajaxSubmitSelection="true"
    				reRender="selected">
     
    				<rich:treeNode type="node"> 
                       <s:link view="/#{item.list}.xhtml" 
                       		   value="#{item.label}"
                       		   ajaxSubmitSelection="true">
                		</s:link>
                    </rich:treeNode>
     
    				<rich:treeNode type="leaf" id="leaf"> 
                        <s:link view="/#{item.list}.xhtml"
                       			value="#{item.label}" 
                       			ajaxSubmitSelection="true">
                    		<f:param id="selected" name="aireProtegeeId" 
                            		value="#{item.id}" />
                		</s:link>
     
                    </rich:treeNode>
     
    			</rich:tree>
    il y a aussi l'attribut 'adviceNodeOpened' du tree mais j'ai pas les utiliser correctement, il m'affiche à chaque fois tous les noeuds de mon tree alors que moi je veux qu'il m'affiche seulement le noeud sur lequel j'ai cliqué

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ton bean est en request?

    si ouii tu dois le mettre en session ou utiliser a4j:keepAlive.

  7. #7
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    voici mon bean (je développe avec jboss seam 2.0.3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Name("menu1")
    @Scope(ScopeType.CONVERSATION)
    public class Menu1 {
    ......
    }

  8. #8
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    J'ai ajouté a4j:keepAlive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:keepAlive beanName="menu1"/>
    mais ça ne change rien!!!

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    si le scope est conversation tu n'a ps besoin de keepAlive.
    est ce que le tree est à l'intérieur d'un form?

  10. #10
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    Oui, mon tree est l'intérieur d'une form dans un panel grid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form>
     
    		<h:panelGrid columns="1" width="100%" columnClasses="col1">
     
    			<rich:tree ........ />

  11. #11
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    le tree s'affiche ou ne s'affiche pas? c'est quoi le problème exactement?? tu as des erreur? le problème survient juste quand tu passe le switchType de client à ajax ou server.?

  12. #12
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    Dans la première page le tree n'affiche que le premier nœud, lorsque je clic sur les flèches il s'ouvre(seulement avec switchType=client, si c'est avec switchType='ajax' ou 'server', le tree ne s'ouvre plus)
    Bon jusqu'à maintenant pas de problème,
    Mais lorsque je clic sur un nœud (qui est en même temps un lien vers une autre page), je veux que mon tree soit ouvert sur le noeud sur lequel j'ai cliqué (en fait le tree doit garder le dernier état de la page précédente)

  13. #13
    Membre éclairé Avatar de Jacobian
    Inscrit en
    Février 2008
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 425
    Par défaut
    je crois une simple binding avec des getter et setter va faire l'affaire...
    avec bien sur le bean on session...

  14. #14
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par soussou126 Voir le message
    Dans la première page le tree n'affiche que le premier nœud, lorsque je clic sur les flèches il s'ouvre(seulement avec switchType=client, si c'est avec switchType='ajax' ou 'server', le tree ne s'ouvre plus)
    Bon jusqu'à maintenant pas de problème,
    Mais lorsque je clic sur un nœud (qui est en même temps un lien vers une autre page), je veux que mon tree soit ouvert sur le noeud sur lequel j'ai cliqué (en fait le tree doit garder le dernier état de la page précédente)
    il y' a une première et une deuxième page ..il y'a peu etre des erreurs qui s'imbriquent.
    peut tu donner le code de la première page qui un problème quand tu change le switchType.

  15. #15
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    j'ai plus de problème avec le switchType (ça marche avec le type 'ajax'), mais ça ne résous pas mon problème!!!!

  16. #16
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    bonjour,
    j'ai toujours le même problème!!!
    alors, je me demande s'il y a quelqu'un qui a une idée sur l'utilisation de l'attribut adviseNodeSelected du tree menu????
    ou du componentState???

  17. #17
    Membre averti
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Par défaut
    Pour ceux qui auront le même problème, voilà la solution:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <h:form>
    	
    		<h:panelGrid columns="1" width="100%" columnClasses="col1">
    			
    			<rich:tree
    				id="tree"
    				style="width:300px"
    				switchType="ajax"
    				var="item"
    				value="#{menu1.treeNode}"
    				nodeFace="#{item.var!=null ? 'leaf' : 'node'}"
    				nodeSelectListener="#{menu1.processSelection}"
    				componentState="#{menu1.selcNode}"
    				ajaxSubmitSelection="true"
    				reRender="selected"
    				preserveModel="state">
    				
    				<rich:treeNode type="node" id="node"> 
                       <s:link view="/#{item.list}.xhtml"
                       		   value="#{item.label}">
                		</s:link>
                    </rich:treeNode>
                    
    				<rich:treeNode type="leaf" id="leaf"> 
                        <s:link view="/#{item.list}.xhtml"
                       			value="#{item.label}">
                    		<f:param id="selected" name="aireProtegeeId" 
                            		value="#{item.id}" />
                		</s:link>
                		
                    </rich:treeNode>
                    
                    <a4j:support event="oncollapse" ajaxSingle="true" />
        			<a4j:support event="onexpand" ajaxSingle="true" />
                    
    			</rich:tree>
    					</h:panelGrid>
    	</h:form>
    et dans mon bean:
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    @Name("menu1")
    @Scope(ScopeType.SESSION)
    public class Menu1 {
          DataComponentState SelcNode;
          public DataComponentState getSelcNode() {
     
    		return selcNode;
    	}
     
    	public void setSelcNode(DataComponentState selcNode) {
    		this.selcNode = selcNode;
    	}
    	public void processSelection(NodeSelectedEvent event) {
    		FacesContext facesContext = FacesContext.getCurrentInstance();
    		System.out.println("process vvvv");	
    		TreeNodeMenu tnm; 
    		tree = (HtmlTree) event.getComponent();
    		System.out.println("tree.getRowData()  "+ tree.getRowData().getClass()
    							+"/n tree.getRowKey().toString()= "+tree.getRowKey().toString());
    		rowKeySelected = tree.getRowKey().toString();
    		System.out.println("rowKeySelected= "+rowKeySelected);
    		tnm=(TreeNodeMenu)tree.getRowData();
    		nodeTitle =  tnm.getLabel();
    		System.out.println("nodeTitle "+nodeTitle);
    		meth = tree.getAdviseNodeSelected();tree.saveState(facesContext));
    		selcNode=(DataComponentState)tree.saveState(facesContext);
          }

    Merci pour ton aide Sniper37

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

Discussions similaires

  1. Garder l'état "pressé" d'un bouton
    Par ritpas dans le forum Windows Forms
    Réponses: 4
    Dernier message: 08/02/2008, 13h55
  2. Garder les états Access mais base Mysql
    Par wishmasteer dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 30/10/2007, 08h42
  3. [script.aculo.us] Garder l'état des Effects
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 6
    Dernier message: 31/05/2007, 10h12
  4. Réponses: 8
    Dernier message: 19/01/2006, 10h57
  5. Réponses: 1
    Dernier message: 01/11/2005, 03h24

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