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 :

Tomahawk tree2 et h:commandLink


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par défaut Tomahawk tree2 et h:commandLink
    Bonsoir,
    j'utilise un arbre tree2 de Tomahawk dont certains noeud et feuilles sont des liens (voir l'extrait de code du fichier JSP ci-dessous).
    Je n'arrive pas à trouver une documentation qui explique comment recupérer le lien cliqué et ses paramètres dans le Backing Bean.
    Si quelqu'un peut m'indiquer une doc ou l'expliquer ici ce serait super.
    JibéCC
    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
     
    <h:form id="nav">
     <t:tree2 id="clientTree" value="#{navigationBean.arbreCausalite}" var="node" varNodeToggler="t">        							
    ...
    d'autres <f:facet></f:facet>
    ...
      <f:facet name="sous-concept-feuille-link">
        <h:panelGroup>                				
            <t:graphicImage value="/images/document.png" border="0"/>
            <h:commandLink immediate="true" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" actionListener="#{t.setNodeSelected}">
                 <h:outputText value="#{node.description}"/>
                 <f:param name="docNum" value="#{node.identifier}"/>
            </h:commandLink>
       </h:panelGroup>
    </f:facet>
    ...
    d'autres <f:facet></f:facet>
    ...
    </t:tree2>
    </h:form>

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par défaut
    Bonsoir,
    après réflexion, peut-être que le paramétrage des liens se fait au moment de la création de l'arbre pour qu'ils soient opérationnels dans le javascript (cas du clientSideToggle = true).
    Dans ce cas, la question se transforme en "comment faire cela ?"

    Mon but étant d'exécuter une méthode suite au clic sur un des liens, le résultat de la méthode dépendant du lien effectivement choisi.

    Cordialement,
    JibéCC

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par défaut
    En fait mon problème était double, celui exposé dans mes précédents posts était caché par un autre que je ne soupçonnais pas (et toujours pas résolu à cette heure => avis aux amateurs ).

    1) le problème que je ne soupçonnais pas :
    En fait, mon <tree2> est à l'intérieur d'un des onglets d'un <t:panelTabbedpane>.
    Dans ce cas, les <h:commandLink> ne fonctionnent pas car il y a une imbrication de <form> dans le code HTML généré, ce qui n'est (à ma connaissance) pas possible.
    Un <form> explicite pour le <tree2> et, a priori, un <form> implicite (non codé dans la page JSP) pour le < t:panelTabbedpane>.
    Je n'ai pas vérifié dans le code html mais sans le <t:panelTabbedpane> ça marche.
    Donc, par voie de conséquence l'attribut action="#{backingBean.methode}" du <h:commandLink> n'était pas opérationnel.
    C'est cela qui m'a dérouté dans un premier temps, d'où mon premier post.

    2) Si ça peut servir à quelqu'un, voici la solution (classique en fait) que j'ai mis en œuvre du coup (<tree2> seul sans <t:panelTabbedpane>) :

    le code de la JSP :
    Pour faire léger, je n'ai mis ici qu'un seul <h:commandLink>, mais cette solution détecte bien le bon lien s'il y en a plusieurs dans le même arbre et aussi s'il y a plusieurs arbres.
    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
     
    <h:form id="nav1">
    	<t:tree2 id="monArbre" 
     			clientSideToggle="true"
     			value="#{leBackingBean.monArbre}" 
     			var="node" 
     			varNodeToggler="t">
    		...
            	<f:facet name="feuille-link">
               		<h:panelGroup>                				
                      	<t:graphicImage value="/images/document.png" border="0"/>
                    			<h:commandLink immediate="true" 
                    						styleClass="#{t.nodeSelected ? 'documentSelected':'document'}"  
                    						actionListener="#{t.setNodeSelected}" 
                    						action="#{leBackingBean.clicLien}">
     
                        			<h:outputText value="#{node.description}"/>
                        			<f:param name="docNum" value="#{node.identifier}"/>
                    			</h:commandLink>
                	</h:panelGroup>
                </f:facet>
    		...
    	</t:tree2>
    </h:form>
    le code de la méthode leBackingBean.clicLien :
    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
     
    public String clicLien() throws Exception{		
    		FacesContext facesContext = FacesContext.getCurrentInstance();
    		ExternalContext extContext = facesContext.getExternalContext();
     
    		//"node" est la valeur du paramètre 'var' du tag <tree2> de la page JSP
    		TreeNodeBase tnb = (TreeNodeBase) extContext.getRequestMap().get("node");
     
    		//ici j'édite pour l'exemple.
    		//le getDescription() récupère le texte du lien car dans la JSP on a 
    		//<h:outputText value="#{node.description}"/> dans le <h:comnanLink> (voir ci-dessus)
    		System.out.println("tnb.getDescription() = " + tnb.getDescription());
     
    		return "pageCible";
    }
    Pour conclure : reste à résoudre l'intégration de cela sans un onglet de <t:panelTabbedpane>.
    C'est un autre problème, je fais donc un autre post (http://www.developpez.net/forums/d60...e/#post3580289) après avoir mis celui-ci comme résolu.
    Bonne nuit, il parait que ça porte conseil...
    JibéCC

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

Discussions similaires

  1. JSF CommandLink au sein DataTable
    Par essaine dans le forum JSF
    Réponses: 2
    Dernier message: 12/04/2010, 11h55
  2. Réponses: 1
    Dernier message: 27/08/2008, 23h41
  3. JSF 1.2 tomahawk tree2 pb javascript
    Par nathieb dans le forum JSF
    Réponses: 3
    Dernier message: 26/08/2008, 11h11
  4. t:commandLink de tomahawk ne fonctionne pas
    Par cooltype dans le forum JSF
    Réponses: 5
    Dernier message: 26/05/2007, 17h55
  5. [JSF] un bug de commandLink ?
    Par cowa dans le forum JSF
    Réponses: 12
    Dernier message: 19/05/2006, 17h58

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