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 :

[JSF][Debutant] SelectOneMenu


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut [JSF][Debutant] SelectOneMenu
    Bonjour,
    j'ai un problème de valueChangeListener dans une page JSF : la méthode désignée n'est jamais exécutée. Apparemment, il ne reconnait même pas l'attribut "valueChangeListener" car si je met une méthode qui n'existe pas dans mon bean, il ne lève aucune exception !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:selectOneMenu value="#{personctrl.personne}"  valueChangeListener= "#{personctrl.Change}" onchange="submit()" immediate="true">
    				<f:selectItems value="#{personctrl.view.personItems}"/>
    			</h:selectOneMenu>

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    c'est bizarre, ton utilisation de SelectOneMenu semble correct.

    Dans ton selectItems tu passe bien en value une liste de SelecItems ?
    T as pas oublié de mettre un h:form dans ton fichier jsp ?

    a part ça je vois pas d'ou ça peut venir...

    Met nous ta fonction Change et le contenu de ton fichier jsp pour qu'on est plus d'infos.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut
    Non, j'ai bien mis la balise form ...

    --> Ma page jsp
    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
    <html>
    	<head>
    		<title>Hibernate Test</title>
    	</head>
    	<body>
    		<f:view>
    		<h:form>
    			<h:selectOneMenu value="#{personctrl.personne}"  valueChangeListener= "#{personctrl.Change}" onchange="submit()" immediate="true">
    				<f:selectItems value="#{personctrl.view.personItems}"/>
    			</h:selectOneMenu>		
    		</h:form>
    			<p>
    			<h:outputText value="#{personctrl.personne.personId}"/>	
    		</f:view>
    	</body>	
    </html>
    --> La fonction change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void Change(ValueChangeEvent event)
    	{
    	    System.out.println("Changement de personne");
    	    this.personne = (Person) event.getNewValue();
    	    FacesContext.getCurrentInstance().renderResponse();
    	}
    et si je change "Change" en "Blablobli" dans la page jsp je ne reçois aucune erreur, la page est rechargée comme si de rien n'était ...

    Merci de votre aide ...

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    ta liste de personItems est elle bien de type selectItems ? et les selectItems prennent comme argument (String,String) sinon il te faut un converter.

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    personItems.add(new SelectItem("Perso1","Perso1"));
    <== marche sans probléme pas besoin de converter

    Mais apparement toi tu à quelque chose dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    personItems.add(new SelectItem(new Person(...),"Personne1"));
    Donc dans ce cas la il te faut un converter pour ton objet de type Person

    quelqu'un à déjà eu un problémé similaire au tiens : http://www.developpez.net/forums/vie...760&highlight=

    Vas voir si ça peut t'aider

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut
    effectivement le premier argument de mon new SelectItem est de type Person ... bon, je me met aux converters et je vous dirai si ça fonctionne.

    (bien que si je remplace new Person() par "Perso1" ça ne fonctionne toujours pas ...)

    Et le fait que je ne retourne aucune erreur même si le nom de ma fonction dans la jsp est erroné c'est normal ?

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 77
    Par défaut
    Confus ... J'ai juste eu à adapter l'exemple de converter donné par Gob4 dans http://www.developpez.net/forums/vie...760&highlight= et ça fonctionne
    Pourtant je vous jure que je l'avais lu ce post ! Peut-être un peu trop vite ...
    ( Vraiment confus ...)
    Merci encore Shivan... apparement c'est toi le préposé aux problèmes de JSF ...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut aide
    bonjour j'ai le meme problème : quand je clique sur mon selectonemenu aucune valeur ne change de la variable cot que je voulai afficher dans un inputText et je ne sais pas quoi faire
    voici le code dans ma jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <h:outputLabel for="periode"><b>Option:</b>
    			<h:selectOneMenu id="periode" tabindex="7" value="#{hospital.currentAdhesion.optionAdhe}"   onchange="this.form.submit();" immediate="true" valueChangeListener="#{hospital.choisir}">
    				<f:selectItem itemValue="1" itemLabel="Option1"></f:selectItem>
                          <f:selectItem itemValue="2" itemLabel="Option2"></f:selectItem>
                          <f:selectItem itemValue="3" itemLabel="Option3"></f:selectItem>
                          <f:selectItem itemValue="4" itemLabel="Option4"></f:selectItem>
     
    			</h:selectOneMenu>
    			<br />
    			</h:outputLabel>
    et pour mon bean voila le code
    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
    public void choisir(ValueChangeEvent event){
     
     
    		System.out.println("azerty");
    	int op= Integer.parseInt(event.getNewValue().toString()) ;
    		System.out.println(op);	
    	switch(op){
    	  case 1: cot=70;break;
    	  case 2: cot=140;break;
    	  case 3: cot=210;break;
    	  case 4: cot=350;break;
    	  }
    	long monLong=(new Integer(cot)).longValue();
     
    	currentAdhesion.setCotisaAdhe(monLong);
    	FacesContext.getCurrentInstance().renderResponse();
    }

    j'ai essayé de voir le lien ou tu as trouvé le converter mais le lien ça marche pas

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

Discussions similaires

  1. [JSF] Debutant rich:dataTable
    Par totofe dans le forum JSF
    Réponses: 11
    Dernier message: 16/07/2009, 17h29
  2. Datatable JSF et SelectOneMenu Dépendants
    Par davidovitch dans le forum JSF
    Réponses: 2
    Dernier message: 24/03/2009, 14h10
  3. Réponses: 2
    Dernier message: 17/10/2007, 15h00
  4. Réponses: 2
    Dernier message: 26/02/2007, 15h06
  5. [jsf-debutant] Qustion !!
    Par maximus001ma dans le forum JSF
    Réponses: 3
    Dernier message: 04/07/2006, 13h00

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