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 :

Interaction CommandButton et SelectOneMenu


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 18
    Points
    18
    Par défaut Interaction CommandButton et SelectOneMenu
    Bonjour,
    Je développe une application avec les JSF sous Eclipse et JBoss.
    J'ai un problème récurrent depuis le début que je n'arrive pas à résoudre.
    Lorsque je définis dans le même formulaire une action associée à un commandButton et un ValueChangeListener à un menu déroulant , le premier clic sur mon bouton appelle la fonction du menu déroulant et non pas de mon bouton.
    A noter qu'il s'agit de bean session.

    Voici un exemple de code qui génére ce problème, mon formulaire est un élément HtmlPanelGrid inclus dans une balise <h: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
     
    HtmlCommandButton enregistrer = (HtmlCommandButton) application.createComponent("javax.faces.HtmlCommandButton");
    enregistrer.setValue("Enregistrer");
    enregistrer.setId("enregistrer");
    MethodBinding onEnregistrer=application.createMethodBinding("#{AccueilMessage.onEnregistrer}",null);
    enregistrer.setAction(onEnregistrer);
    formulaire.getChildren().add(enregistrer);
     
    [...]
     
    HtmlSelectOneMenu contenuFormulaire=(HtmlSelectOneMenu) application.createComponent("javax.faces.HtmlSelectOneMenu");
    contenuFormulaire.setId("contenu");
    MethodBinding valueContenuConteneurChange=application.createMethodBinding("#{AccueilMessage.valueContenuConteneurChange}",new Class[]{ValueChangeEvent.class});
    contenuFormulaire.setValueChangeListener(valueContenuConteneurChange);
     
    UISelectItem multiple = (UISelectItem) application.createComponent(UISelectItem.COMPONENT_TYPE);
    multiple.setItemValue("multiple");
    multiple.setItemLabel("multiple");
    contenuFormulaire.getChildren().add(multiple);
     
    [...]
     
    contenuFormulaire.setOnchange("submit()");
    contenuFormulaire.setImmediate(true);
    formulaire.getChildren().add(contenuFormulaire);

    Donc dans mon exemple lors de la validation de mon formulaire avec le bouton enregistrer, c'est la fonction valueContenuConteneurChange qui est appelée et non pas la focntion onEnregistrer comme je le souhaite


    Merci de votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    je me permet de réitérer ma demande car je n'ai toujours pas compris.
    Apparemment si dans le même formulaire (<h:form>) il y a une action définie sur un commandButton, et un valueChangeListener sur un composant selectOneMenu, alors lors de la première validation du formulaire ce sera la fonction du valuechangeListener qui est appelée. Ensuite en revanche le bouton fonctionne normalement.
    J'ai réussi à contourner le problème en mettant mon selectOneMenu dans un autre formulaire, mais ce n'est pas du tout "propre" et j'aimerais bien comprendre s'il s'agit d'un fonctionnement normal, ou s'il s'agit d'un bug.
    Merci si y en a qui ont des suggestions.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Points : 514
    Points
    514
    Par défaut
    A priori il y à pas de probléme dans tons cas. J'ai aussi un valuchangeListener sur selectOneListBox avec des commandBouttons dans le meme formulaire.

    Quelle composant utilise tu ? Quelle implementation utilise tu ? sun ou myFaces ?

    Essaye avec les composants de tomahawk si tu peux...

    As tu le meme probléme sur une page "statique", c'est à dire sans généré tes composants jsf avec du code java ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Points : 18
    Points
    18
    Par défaut
    j'ai fait de nouveaux tests depuis mon denier post:
    -effectivement le problème est aussi présent dans des pages "statique"
    -j'utilise l'implémentation de sun jsf-1.1_01
    Malheureusement je n'ai plus trop le temps de me pencher sur les composants tomhawk.
    Par contre j'ai testé rapidement la version de sun jsf-1.2,apparemment les fonctions createMethodBinding, createValidator, etc... deviennent deprecated.
    Peut-être est-ce un bug connu???
    bref je patauge...

Discussions similaires

  1. CommandButton et selectOneMenu dans un form
    Par TLOH45 dans le forum JSF
    Réponses: 3
    Dernier message: 02/12/2012, 12h22
  2. Pb avec dataTable, selectOneMenu et commandButton
    Par Laurent68 dans le forum JSF
    Réponses: 4
    Dernier message: 14/02/2007, 08h43
  3. [Collaboration/Interaction] Peut-on schématiser une interaction entre un bouton de commande et un autre objet ?
    Par manel007 dans le forum Autres Diagrammes
    Réponses: 5
    Dernier message: 21/09/2004, 02h01
  4. [CR] Interaction Etat/Sous Etat
    Par PAC76 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 03/06/2004, 17h21
  5. Réponses: 4
    Dernier message: 17/05/2004, 10h57

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