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 :

h:commandLink et h:outputLink


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut h:commandLink et h:outputLink
    Bonjour à tous
    j'ai besoin qu'a partir d'un outputLink , j'execute une action de mon managed bean
    J'ai pas trouvé une solution

    J'ai pensé à utiliser un commandLink pour définir là où je veux aller
    <h:commandLink action="#{monBean.action}" id="linkAction"/>

    Mais je voix pas comment je peux lier le outputLink au commandLink

    Si vous avez une idée je serais reconnaissant.

    Merci d'avance

  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
    Citation Envoyé par badreddine540 Voir le message
    Bonjour à tous
    j'ai besoin qu'a partir d'un outputLink , j'execute une action de mon managed bean
    J'ai pas trouvé une solution

    J'ai pensé à utiliser un commandLink pour définir là où je veux aller
    <h:commandLink action="#{monBean.action}" id="linkAction"/>

    Mais je voix pas comment je peux lier le outputLink au commandLink

    Si vous avez une idée je serais reconnaissant.

    Merci d'avance
    Pourquoi tu veux utiliser outputLink avec une action ? au lieu d'utiliser commandLink?

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Je voix pas comment faire pour évaluer un évennement onclick sur le commandLink?

  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
    Citation Envoyé par badreddine540 Voir le message
    Je voix pas comment faire pour évaluer un évennement onclick sur le commandLink?
    commandLink dispose de l'attribut onclick que tu peux utiliser comme un outputLink.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Bonjour,

    J'utilise un outputLink qui est dans un formulaire mais je dois exécuter des action en envoyon le contenu d'un autre formulaire, donc pour ce faire je déclare un commandLink dans l'autre formulaire et dans l'evennement onclik du outputLink j'évalue le commandLink.
    ça marche très bien avec IE mais sur fireFox j'ai un message d'erreur et et le commandeLink n'est pas évalué, donc l'action n'est pas exécuté
    voici l'erreur
    Erreur*: f is undefined
    Fichier Source*: http://localhost:8080/MonProjet/a4j/...axScript.xhtml
    Ligne*: 109

    Voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:form id="f1">
       <h:outputLink value="link 1" onclick="executeLink('f2:cmd1')"/>
    </h:form>
     
    <h:form id="f2">
       <h:outputLink action="#{monBean.action}" id="cmd1"/>
    </h:form>
    voici le code de la fonction js executeLink

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    function executeLink(id) {
            if(document.getElementById(id).dispatchEvent) {
    		var target = document.getElementById(id);
    		oEvent = document.createEvent("MouseEvents");
    		oEvent.initMouseEvent("click",true,true,window,1,1,1,1,1,false,false,false,false,0,target);
    		target.dispatchEvent(oEvent);
    	}
    	else 
    		document.getElementById(id).click();
    }

  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
    Qu'est ce que tu veux dire par évaluer le comandLink ?
    Tout ce que tu dis se fait facilement avec commandLink et les navigations rules.

    un bout de code pour mieux comprendre..

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    oui, mais dans mon cas que j'ai décris ça marche pas sur fireFox

  8. #8
    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 ne sais pas ce que fais ta fonction javascript, mais, tu peux l'appeler dans le commandLionk, si tu as une erreur javascript, ce n'est pas à cause du commandLink mais plutôt de ta fonction..

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Je rencontre pas de problème avec cette fonction avec IE,
    Mais sur fireFox si je fait un trie sur un dataTable ou pagination et puis je clique sur le lien l'erreur que je t'ai montré apparait.
    C'est comme si JSF il cache les appels javaScript dans un pool mais dans mon cas et avec FireFox il échoue

  10. #10
    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 badreddine540 Voir le message
    Je rencontre pas de problème avec cette fonction avec IE,
    Mais sur fireFox si je fait un trie sur un dataTable ou pagination et puis je clique sur le lien l'erreur que je t'ai montré apparait.
    C'est comme si JSF il cache les appels javaScript dans un pool mais dans mon cas et avec FireFox il échoue

    tu as combien de form dans ta page? il faut un seul form dans lequel tu inclus la dataTable et le reste.
    si ça marche sous IE ça doit être un coup de chance. Firefox

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    j'ai trois formes mais ils sont pas des formes imbriqués.

  12. #12
    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 badreddine540 Voir le message
    j'ai trois formes mais ils sont pas des formes imbriqués.
    utilise un seul form global..

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    voici mon xhtml de deux façons pls form et un seul form

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <ui:composition xmlns:f="http://java.sun.com/jsf/core"
      	xmlns:h="http://java.sun.com/jsf/html"
      	xmlns:rich="http://richfaces.org/rich"
      	xmlns:a4j="http://richfaces.org/a4j"
      	xmlns:ui="http://java.sun.com/jsf/facelets"
      	xmlns:c="http://java.sun.com/jsp/jstl/core"
      	>
     
    <f:view>
     
    	<a4j:loadScript src="/js/theJs.js"/>
     
    	<h:form id="bd">
    		<h:outputLink  onclick="executeLink('mainForm:hlinkTest');">
    			<h:outputText value="cliquer ici"/>
    		</h:outputLink>
    	</h:form>
    	 <h:form id="mainForm">
    	 	<h:panelGroup id="GroupId" >
    	 	<rich:simpleTogglePanel switchType="ajax" >
    	 		<h:outputText value="j'ete cache ......"/>
    	 	</rich:simpleTogglePanel>
    	 	</h:panelGroup>
    	 </h:form>
     	<h:form id="mainForm2">
     		<rich:dataTable id="tab1"  value="#{monBean.list}" var="item" width="100%" rowClasses="even-row,odd-row"
    			onRowMouseOver="jQuery(this).addClass('active-row')" onRowMouseOut="jQuery(this).removeClass('active-row')" reRender="mainForm2,resultatTableNomenclature">		
    			<!-- Creation d'une colonne -->
    			<f:facet name="header">
    		    	<h:outputText value="Mon tab" />
    		    </f:facet>
     
     
     
    			<rich:column id="column2" sortBy="#{item.r1}" style="text-align: right;">
    				<f:facet name="header">
    					<h:panelGroup>
    		    			<h:outputText value="c1"/>
    		    		</h:panelGroup>
    		    	</f:facet>
    		    	<h:outputText value="#{item.r1}"/>
    			</rich:column>
     
    			<rich:column id="column3" sortBy="#{item.r2}">
    				<f:facet name="header">
    					<h:panelGroup>
    		    			<h:outputText value="r2"/>
    		    		</h:panelGroup>
    		    	</f:facet>
    		    	<h:outputText value="#{item.r2}" />
    			</rich:column>
     
     
     
     
    			</rich:dataTable>
     
    	 	<h:commandLink id="hlinkTest" action="#{monBean.reset}" ></h:commandLink>
     
    	 </h:form>
    	</f:view>
    </ui:composition>
    et un seul form
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    <ui:composition xmlns:f="http://java.sun.com/jsf/core"
      	xmlns:h="http://java.sun.com/jsf/html"
      	xmlns:rich="http://richfaces.org/rich"
      	xmlns:a4j="http://richfaces.org/a4j"
      	xmlns:ui="http://java.sun.com/jsf/facelets"
      	xmlns:c="http://java.sun.com/jsp/jstl/core"
      	>
     
    <f:view>
     
    	<a4j:loadScript src="/js/theJs.js"/>
     
    	<h:form id="mainForm">
    		<h:outputLink  onclick="executeLink('mainForm:hlinkTest');">
    			<h:outputText value="cliquer ici"/>
    		</h:outputLink>
    	 	<h:panelGroup id="GroupId" >
    	 	<rich:simpleTogglePanel switchType="ajax" >
    	 		<h:outputText value="j'ete cache ......"/>
    	 	</rich:simpleTogglePanel>
    	 	</h:panelGroup>
     		<rich:dataTable id="tab1"  value="#{monBean.list}" var="item" width="100%" rowClasses="even-row,odd-row"
    			onRowMouseOver="jQuery(this).addClass('active-row')" onRowMouseOut="jQuery(this).removeClass('active-row')" reRender="mainForm2,resultatTableNomenclature">		
    			<!-- Creation d'une colonne -->
    			<f:facet name="header">
    		    	<h:outputText value="Mon tab" />
    		    </f:facet>
     
     
     
    			<rich:column id="column2" sortBy="#{item.r1}" style="text-align: right;">
    				<f:facet name="header">
    					<h:panelGroup>
    		    			<h:outputText value="c1"/>
    		    		</h:panelGroup>
    		    	</f:facet>
    		    	<h:outputText value="#{item.r1}"/>
    			</rich:column>
     
    			<rich:column id="column3" sortBy="#{item.r2}">
    				<f:facet name="header">
    					<h:panelGroup>
    		    			<h:outputText value="r2"/>
    		    		</h:panelGroup>
    		    	</f:facet>
    		    	<h:outputText value="#{item.r2}" />
    			</rich:column>
     
     
     
     
    			</rich:dataTable>
     
    	 	<h:commandLink id="hlinkTest" action="#{monBean.reset}" ></h:commandLink>
     
    	 </h:form>
    	</f:view>
    </ui:composition>
    Mais dans les deux cas si je fait un trie sur le tableau le lien ne fait que reafficher la page et c'est sur FireFox seulement

    est ce qu'il y a une autre façons de faire ou est ce que le problème vient de la méthode javaScript peut être que ça doit être autrement pour que ça marche sur FireFox.
    Cette fonction marche bien tanque j'ai pas fait de trie sur le tableau. mais après un trie rien ne se passe juste un réaffichage de la page.

  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
    - garde un seul form.

    - ne pas faire reRender sur tous le form mais que la partie de la page qui change, si c'est que la dataTable, tu n'a pas besoin de reRender dans la dataTable.

    - est ce que l'action est executée? le mieux est de loguer les phases JSF pour vérifier dans le quelle phase le processus s'arrête. une explication est dans la .

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    J'ai enlevé le reRender et ça marche dans les deux cas.
    Merci, pour l'aide

  16. #16
    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
    Merci de penser à la prochaine fois..

+ 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. datatable & commandLink
    Par dev7 dans le forum JSF
    Réponses: 1
    Dernier message: 27/11/2006, 14h46
  3. <h:dataTable> et <h:commandLink> ?
    Par eric95 dans le forum JSF
    Réponses: 11
    Dernier message: 21/10/2006, 19h50
  4. javascript dans commandLink
    Par owen2 dans le forum JSF
    Réponses: 3
    Dernier message: 12/07/2006, 15h18
  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