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 :

Richfaces, a4j:commandButton et actionListener


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Par défaut Richfaces, a4j:commandButton et actionListener
    Bonjour,

    Je suis entrain de passer une application de primefaces à richfaces (3.x). J'utilisais des <p:commandButton> comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p:commandButton update="content, user" actionListener="#{user.connect}" value="Connexion" />
    Elles étaient entourée de <h:form>

    Avec richfaces j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a4j:commandButton reRender="content, user" actionListener="#{user.connect}" value="Connexion" />
    Entouré cette fois-ci de <a4j:form>.

    Le problème c'est qu'il m'indique ne pas trouver d'attribut connect au managed bean user. J'ai essayé de voir dans la documentation officielle si actionListener pouvait être remplacé mais je n'ai pas su trouver.

  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
    tu peux donner le code complet de la page,
    pas besion d'utiliser a4j:form, un simple h:form suffit, dans le reRender tu dois mettre l'id des composants à mettre à jour, est ce le cas?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Par défaut
    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
    <h:panelGroup xmlns="http://www.w3.org/1999/xhtml"
    			  xmlns:h="http://java.sun.com/jsf/html"
    			  xmlns:f="http://java.sun.com/jsf/core"
    			  xmlns:ui="http://java.sun.com/jsf/facelets"
                  xmlns:p="http://primefaces.prime.com.tr/ui"
                  layout="block" id="user">
    	<a4j:form>
    		<h:panelGrid columns="2" rendered="#{!user.connected}">
    			<h:outputLabel value="Identifiant : " for="username" />
    			<h:inputText required="true" value="#{user.login}" id="username"
    						 label="username">
    			</h:inputText>
    			<h:outputLabel value="Mot de passe : " for="password" />
    			<h:inputSecret value="#{user.passwd}" required="true"
    						   requiredMessage="Entrez un mot de passe" id="password"
    						   label="password" />
    			<a4j:commandButton reRender="content, user" actionListener="#{user.connect}"
    							 value="Connexion" />
    		</h:panelGrid>
    	</a4j:form>
    	<a4j:form>
    		<h:panelGrid columns="2" rendered="#{user.connected}">
    			<p>Bienvenue #{user.login}</p>
    			<a4j:commandButton value="Déconnexion" reRender="content, user"
    							 actionListener="#{user.disconnect}" />
    		</h:panelGrid>
    	</a4j:form>
    	<a4j:form>
    		<h:panelGrid columns="2" rendered="#{user.connected}">
    			<p:commandLink id="link" action="search" value="Chercher" />
    			<h:inputText required="false" value="#{findLot.id1}" id="search"
    						 label="search" />
    		</h:panelGrid>
    	</a4j:form>
    </h:panelGroup>
    Voici le code de la facelet en question.

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Pour JSF et Richfaces, la méthode liée à un actionListener a la signature suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void doSomething(javax.faces.ActionEvent evt) { ... }
    Est-ce aussi le cas pour Primefaces ? (en particulier concernant l'argument de la méthode)
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    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
    Il faut mettre tous les composants dans un seul form y compris le panel global surtout si celui ci est présent dans le reRender. si tu fais le reRender de user, tous les ses composants fils seront mises à jour.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur
    Inscrit en
    Décembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 101
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Pour JSF et Richfaces, la méthode liée à un actionListener a la signature suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void doSomething(javax.faces.ActionEvent evt) { ... }
    Est-ce aussi le cas pour Primefaces ? (en particulier concernant l'argument de la méthode)
    Oui il me semble. Voici la fonction connect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void connect(final ActionEvent e) {
        connected = !connected && passwd != null && passwd.equals("michel");
        passwd = "";
    }
    et les imports du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.event.ActionEvent;
    J'ai modifié la (le ?) facelet pour que le form englobe tout et ça ne change rien, mais si c'est une meilleure pratique je garde

  7. #7
    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
    tu as changé la config pour l 'adapter à Richfaces?

    tu peux montrer le code du web.xml?

    NB: il me semble que le code de l'actionListener fait la validation de tes champs input. Normalement ça doit être fait à l 'aide d'un validator.

Discussions similaires

  1. richfaces: probléme avec a4j:commandButton
    Par Narouto dans le forum JSF
    Réponses: 5
    Dernier message: 08/06/2011, 23h54
  2. Problème avec a4j:commandButton (richfaces)
    Par elbissat dans le forum JSF
    Réponses: 3
    Dernier message: 29/05/2009, 15h27
  3. <a4j:commandButton> attribut data
    Par sendoshi dans le forum JSF
    Réponses: 3
    Dernier message: 24/12/2008, 15h25
  4. Réponses: 5
    Dernier message: 14/12/2007, 19h10
  5. Réponses: 12
    Dernier message: 29/10/2007, 15h23

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