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 :

probleme valuechangelistener selectOneMenu


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut probleme valuechangelistener selectOneMenu
    Bonjour,

    j'essaye actuelement d'appeler une méthode présente dans un bean depuis un selectOneMenu... mais rien y fais, j'ai bo me mettre en mode debug, ma methode n'est jamais appelé, et je ne sais vraiment plus quoi faire !!!!

    Dans ma JSP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:selectOneMenu id="langue"
    								value="#{langueUtilisateurBean.idLangue}"
    								valueChangeListener="#{langueUtilisateurBean.modifLangueUtilisateur}"
    								onchange="submit()">
    								<f:selectItems value="#{langueUtilisateurBean.items}" />
    							</h:selectOneMenu>
    Dans mon bean :
    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
     
    	public LangueUtilisateurBean(){
    		langueList = new ArrayList();	
    	}
     
     
    	public void modifLangueUtilisateur(ValueChangeEvent value) throws RecosException{
    		Utilisateur utilisateur = ContextUtils.getCurrentUser();
    		langueSelectionne = langueService.retrieveLangue((Long)value.getNewValue());
    		utilisateur.setLangue(langueSelectionne);
    		ContextUtils.setCurrentUser(utilisateur);
     
    		// Important: Utiliser renderResponse pour empecher
    		// le passage dans la phase de validation
    		FacesContext.getCurrentInstance().renderResponse();
    	}
     
    	public Long getIdLangue() {
    		Utilisateur utilisateur = ContextUtils.getCurrentUser();
    		idLangue = utilisateur.getLangue().getId();
     
    		return idLangue;
    	}
     
    	public void setIdLangue(Long idLangue) {
    		this.idLangue = idLangue;
    	}
     
    	public SelectItem[] getItems() {
    		//	On initialise la combo langue
    		try {
    			langueList = langueService.retrieveLangues();
    		} catch (RecosException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    		Object[] langueTab = langueList.toArray();
    		items = new SelectItem[langueTab.length + 1];
     
    		items[0] = new SelectItem("");
     
    		for (int i = 1; i < items.length; i++) {
    			langue = (Langue) langueTab[i - 1];
    			items[i] = new SelectItem(langue.getId().toString(), langue.getNom());
    		}
    		return items;
    	}
     
    	public void setItems(SelectItem[] items) {
    		this.items = items;
    	}
    Mon selectOneMenu s'initialise très bien, il contient toutes les valeurs dont j'ai besoin, mais impossible de passer par la méthode "modifLangueUtilisateur" lorsque je selectionne un nouvel item !!!

    Si quelqu'un a une idée, je suis vraiment preneur

    Merci d'avance !

  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 : 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
    C'est normal :o)

    La méthode définie dans le valueChangeListener ne sera appelée que lorsque ton formulaire sera envoyé à ton serveur.
    Ce n'est pas la même chose que l'événement onchange du Javascript... La méthode valueChangeListener n'est appelée que lorsqu' à la validation du formulaire - du côté serveur - la valeur de ce champ a changé par rapport à sa précédente valeur.

    Personnellement, j'utilise le <a4j:support event="onchange" .../> pour gérer ce genre de cas (un appel Ajax est réalisé à chaque modification du choix utilisateur). En effet, l'attribute onchange du composant selectOneMenu n'accepte que du Javascript.
    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
    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
    Une autre solution est expliquée ici.
    En gros, tu gardes ton code tel qu'il est, mais tu ajoutes onchange="this.form.submit();", ce qui aura pour conséquence de soumettre ton formulaire au serveur, qui alors exécutera ta méthode du bean...
    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

  4. #4
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    raté...

    J'ai dans selectOneMenu la ligne suivante : onchange="submit()"
    qui me permet en principe de faire un appel serveur....

    Dans le doute j'ai test : onchange="this.form.submit();"
    Mais visiblement le resultat est identique... toujours pas de passage dans ma méthode

    Je sais vraiment plus quoi faire....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    Essai avec le composant suivant de tomahawk, ca appelle le set de l'attribut placer dans property :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <t:updateActionListener property="" value=""/>
    où "property" vaut la valeur qui change et "value" la nouvelle valeur.

    Il suffit ensuite de faire appel à ta méthode dans le set de ton Bean d'affichage.

    Infonini

  6. #6
    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
    Effectivement, désolé, je n'avais pas fait attention

    Pour ton problème, du coup, c'est bizarre en effet. Tu n'as pas d'erreur de validation de ton formulaire, ce qui pourrait expliquer pourquoi JSF quitte son lifecycle plus tôt, avant d'exécuter ta 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

  7. #7
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Problème résolu !

    le pb était le suivant, mon idLangue ds
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="#{langueUtilisateurBean.idLangue}"
    était dans mon bean de type Long alors que l'id des mes items etaient de type String...
    En mettant mon idLangue en type String, je passe bien par ma méthode

    Le plus navrant dans cette histoire, c'est que JSF est incapable de faire remonter un exception dans ce genre de situation

  8. #8
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Par défaut
    penser au
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


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

Discussions similaires

  1. Probleme avec SelectOneMenu avec JSF
    Par rabebIF5 dans le forum JSF
    Réponses: 1
    Dernier message: 15/05/2009, 09h01
  2. Problem avec selectonemenu
    Par midos dans le forum JSF
    Réponses: 10
    Dernier message: 20/04/2009, 11h45
  3. [JSF] probleme avec selectonemenu
    Par cymp dans le forum JSF
    Réponses: 38
    Dernier message: 21/10/2008, 10h25
  4. JSF1.2 valueChangeListener SelectOneMenu
    Par nathieb dans le forum JSF
    Réponses: 1
    Dernier message: 17/07/2008, 15h38
  5. Réponses: 2
    Dernier message: 13/03/2007, 09h37

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