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 :

selectOneMenu et ValueChangeListener


Sujet :

JSF Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut selectOneMenu et ValueChangeListener
    Bonjour, j'essaye de faire quelque chose que j'imaginais assez trivial, c'est à dire afficher un menu déroulant proposant un certain choix (du nombre d'autres Items X qu'on affiche en même temps), et qui appelle donc une méthode d'un bean scope session à chaque fois que le dit-item est changé.
    Seulement problême, lorsque je change la valeur de mon selectItems, le selectOneMenu n'appelle aucune fonction, ne fait rien, rien du tout, il ne rentre même pas dans la méthode du valueChangeListener.

    //shows est un attribut int destiné à contenir la valeur servant à la méthode.
    //show est une méthode x du même bean que je ne détaille pas vu qu'elle n'est pas appelée, elle change le nombre d'items affiché par une autre arrayList en fonction de la valeur shows.
    //dbbList est un arrayList basique contenant les différentes valeurs possible de shows, dont voici le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ArrayList dbbList = new ArrayList();
     
    public dbShow() {
     
    		dbbList.add(new SelectItem("10", "10", "10"));
    		dbbList.add(new SelectItem("25", "25", "25"));
    		dbbList.add(new SelectItem("40", "40", "40"));
    		dbbList.add(new SelectItem("100", "100", "100"));
     
     
    	}

    Voici la partie du code posant problême.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:outputText value="Show "/>
     
    <h:selectOneMenu id="selectShow" value="#{qlBean.shows}"  style="" valueChangeListener="#{qlBean.show}">
    <f:selectItems value="#{dbShow.dbbList}" />
    	</h:selectOneMenu>
    Merci d'avance pour toute forme d'aide.

  2. #2
    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 : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour,

    Il faut savoir que le valueChangeListener n'est appelé qu'à partir du moment où une requête est envoyée au serveur. Par exemple quand l'utilisateur clique sur un bouton submit...
    Autrement dit, le valueChangeListener n'est pas appelé immédiatement après le changement d'une valeur.

    Pour pallier ce problème, 2 solutions :

    1. Ajouter dans ton code un onchange="this.form.submit();", qui signifie que dès que la valeur choisie est modifiée, le formulaire entier est soumis.
    2. Utiliser de l'Ajax, qui a tout à fait son intérêt ici. De très bonnes librairies le permettent facilement, en particulier Richfaces.

    En espérant t'avoir aidé...
    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

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Merci, j'ai ajouté le submit() et cela à l'air d'aller.
    Bien sur à présent je fais face à d'autres problêmes mais ainsi vont les choses.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Voila j'ai à nouveau un problême, le selectOneMenu reconnait sa value et sa méthode valuechangelistener associés, mais la value "shows" semble être reconnu avec un tempo de n-1.

    Je m'explique, au début la value shows est intialisé sur null la méthode ne se lance logiquement pas vu que rien n'est changé, l'affichage donné est l'affichage standard.

    Lorsque je change la valeur du select sur 10 il lance la fonction AVEC NULL, l'affichage annonce logiquement un problême.

    Lorsque je change la valeur du select sur 40 il lance maintenant seulement la méthode avec 10, il affiche 10 éléments.

    Lorsque je change la valeur avec 100 il lance la fonction avec ?? 40 .. je pense que vous avez compris... je précise que je fais un System.out.println des le tout début de la fonction valuechangelistener pour bien m'assurer que la méthode se lance bien comme je vous l'ai décrit, shows semble donc changer de valeur avec un temps de retard à chaque fois...

    edit: je viens d'enlever le résolu pour poser ma question.
    En quelque sorte on peut dire que la méthode est lancé avec l'item que je quitte (que j'avais avant de choisir l'autre) et non celui que je choisis.

  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
    montre ton code..

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Problême résolu by myself.

    J'utilisais le champ shows qui apparement ne change qu'une fois le formulaire posté, à contrario de l'object ValueChangeEvent value, qui est la pour ça d'ailleurs et qu'on peut retrouver ainsi : value.getNewValue();

    Merci pour l'aide, problême enfin résolu, définitivement, enfin j'espère.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2011, 17h06
  2. Problème avec selectOneMenu et valueChangeListener
    Par sylviefrfr dans le forum JSF
    Réponses: 0
    Dernier message: 10/06/2010, 12h56
  3. selectOneMenu et valueChangeListener
    Par cs_zineb dans le forum JSF
    Réponses: 10
    Dernier message: 20/05/2008, 15h32
  4. selectOneMenu et valueChangeListener ?
    Par eric95 dans le forum JSF
    Réponses: 5
    Dernier message: 10/12/2007, 12h28
  5. Réponses: 2
    Dernier message: 03/04/2007, 22h02

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