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 :

a4j commandButton, action ne s'execute pas


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut a4j commandButton, action ne s'execute pas
    Hi Everyone!

    J'ai fait un peu le tour du forum, et je n'ai pas vraiment trouvé de réponses à mon problème. Je m'explique: J'ai une liste d'objets que j'affiche dans un rich:dataTable. en dessous de ce dataTable, j'ai un a4j:commandButton qui ouvre un rich:panel. Ce dernier contient des champs, on les remplit et lorsque je clique sur le a4j:commandButton "Add", qui est censé me créer l'objet dans la BD avec toutes les informations rentrées précédemment. Or, étrangement, l'action du a4j:commandButton ne s'effectue pas....je vous joins le code pour que vous compreniez un peu mieux le contexte:

    Le code JSF:
    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
     
    <rich:panel id="addEvent" style="display:none;"
    						styleClass="standardTable_ColumnTopCentered"
    						rendered="#{not empty EventTypeManagement.contextSubET}">
    						<f:facet name="header">
    							<h:outputText value="Create New Sub-Event" />
    						</f:facet>
    						<h:panelGrid columns="2">
     
    							<h:outputText value="Enter a name: " />
    							<h:inputText value="#{EventTypeManagement.contextSubET.name}" />
     
    							<h:outputText value="Impacted by Web Methods?" />
    							<h:selectBooleanCheckbox
    								value="#{EventTypeManagement.contextSubET.impactWebMethods}" />
     
    							<h:outputText value="Partner Impacted?" />
    							<h:selectBooleanCheckbox
    								value="#{EventTypeManagement.contextSubET.impactTpassServices}" />
     
    						</h:panelGrid>
     
    						<!--							<rich:spacer width="1" height="5" title="Here is a spacer..." />-->
     
    						<!--							<h:panelGrid columns="2">-->
    						<a4j:commandButton value="Add" id="addevent"
    							action="#{EventTypeManagement.addSubEvent}" onclick="hidePan()"
    							styleClass="input_Button" reRender="tabChildEventList"
    							limitToList="true" />
     
     
     
    						<a4j:commandButton value="Hide" id="CancelEvent"
    							onclick="hidePan();return false;" styleClass="input_Button" />
     
    <!--						<a4j:log popup="false" />-->
     
    						<!--							</h:panelGrid>-->
    						<!--						</h:panelGrid>-->
    					</rich:panel>
    et la méthode qui est censée ajouter l'objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void addSubEvent() {
    		eventTypeManager.SaveEvent(getContextSubET());
    		getContextET().getImpactedChilds().add(getContextSubET());
    		setLstSubEvent(null);
    	}
    La méthode n'est même pas appellée

    Alors faites une bonne action pour le monde, aidez la Cheerleader =). Merci d'avance !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    quand les actions ne sont pas appelée, soit t'as une erreur de validation (un champ mal rempli dans le formulaire), soit le bouton n'existe plus au moment de l'action (dans ton cas, ca veux dire que #{not empty EventTypeManagement.contextSubET} s'évaluer à false durant l'envoi du formulaire)

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    Ok....je ne pense pas que cela soit des problèmes de données dans le formulaire, je dois juste rentrer un nom et cocher ou non deux checkBox. Je pencherai plutôt pour le problème du rendered. Je vais essayer de trouver un moyen de l'enlever...Mais je ne saisis pas vraiment pourquoi il est remis à "false"...Tu as une explication? Merci de ta réponse en tout cas

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    souvent ca se produit parce que la propriété renférencée est sur un bean request scope qui reprend sa valeur lors de la requete suivante:


    1. action 1
    2. mise à jour du bean request scope X , notament X.a dans l'action
    3. rendu du formulaire, dont un panneau ayant rendered="#{X.a}"
    4. envoi par le client du formulaire (deuxième requête)
    5. JSF recrée le bean X request scope, X.a vaut false par défaut
    6. le panneau ne participe pas à l'opération car rendered à false, son bouton ne peux donc pas travailler




    Note que si tu ne pense pas que ce soit le renderd à false, t'as plusieurs possibilités

    mettre dans ton bean sur le getter de la propriété un System.out.println avec cette valeur pour voir si elle ne change jamais
    mettre dans ta page, si c'est pas fait, un <h:messages/> qui affichera toutes les erreurs de validation (ce serait la première chose à faire)
    utiliser quelque chose comme facestrace qui permet d'avoir les détails, dans le page, de ce qui s'est passé lors de la requete

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    Ok je vais regarder cela...Merci beaucoup!

  6. #6
    Membre éclairé Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Par défaut
    Bonjour, j'ai le meme probleme.

    J'ai un scrollableDataTable. lorsque l'utilisateur clique sur une une ligne, ça affiche le detail dans un rich:panel.
    Dans ce panel, il y a un bouton qui affiche un modalpanel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <a4j:commandButton value="Lancer" 
    	action="mapForm.createName" 
    	oncomplete="javascript:Richfaces.showModalPanel('mdCreer');" reRender="mdCreer"/>
    dans ce modalpanel, je recucpere des proprietes de mon bean mapForm, ça fonctionne impecc.
    par contre le "mapForm.createName" ne ce lance pas...
    dans createName, j'ai un system.out.println", mais aucune ligne n'est ajouté dans stdout.
    J'ai essayé de remplacer le action, par un truc bidon, j'ai n'ai meme pas de message d'erreur.
    comme si le action n'existait pas .

    Au secours !
    merci d'avance.

  7. #7
    Membre éclairé Avatar de Elwe31
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 487
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    action="#{mapForm.createName}"
    Fonctionne bien mieux...
    desolé!

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Février 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2009
    Messages : 49
    Par défaut
    moi je travaille avec command button et componnentcontrol et ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a4j:commandButton id="supp_presta" value="Supprimer"  
    reRender="tab"   action="#{bean.supprimer}" >
    <rich:componentControl for="supp_presta_panel"  attachTo="supp_presta" operation="show" event="onclick"/>
    </a4j:commandButton>
    operation peut etreshow or hide

Discussions similaires

  1. action ne s'execute pas au premier click
    Par yous18 dans le forum JSF
    Réponses: 1
    Dernier message: 28/05/2012, 22h56
  2. la methode dans action ne s'execute pas
    Par yous18 dans le forum JSF
    Réponses: 4
    Dernier message: 10/05/2012, 17h43
  3. Réponses: 4
    Dernier message: 30/11/2011, 08h33
  4. Réponses: 2
    Dernier message: 13/03/2007, 09h37
  5. Action qui ne s'execute pas là
    Par kamaldev dans le forum Struts 1
    Réponses: 4
    Dernier message: 02/08/2006, 12h22

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