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 :

Action sur le changement d'un OneSelectMenu


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut Action sur le changement d'un OneSelectMenu
    Bonjour,

    Je travaille actuellement sur le JSF et j'ai quelques petits problemes...

    J'ai mis dans un selectOneMenu un enum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:selectOneMenu> 
         <f:selectItems value="#{personCtrl.enumValue}"/>
    </h:selectOneMenu>
    personCtrl est un controller (une classe Java)
    enumValue fait référence à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      /**
         * @return the select enum list.
         */
        public List<SelectItem> getEnumValue() {
            final List<SelectItem> selectEnumList = new ArrayList<SelectItem>();
            for (final AbsenceTypeEnum enm : AbsenceTypeEnum.values()) {
                selectEnumList.add(new SelectItem(enm.ordinal(), enm.name()));
            }
            return selectEnumList;
        }
    Donc, dans ma combo j'ai chacune des valeur de mon enum.

    Ce qui m'intéresse à présent, est de faire, à chaque changement dans la combobox, de setter dans ma classe l'ordinal de l'enum sélectionné.

    J'ai essayé deux techniques mais rien ne marche... (ou alors, je le fait mal).

    J'ai essayé en rajoutant la balise <a4j:support> avec event="onchange"
    avec valueChangeListener.

    Quelqu'un pourrait-il m'expliquer comment résoudre ce problème?

    Merci d'avance!

    Cordialement

  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
    Il faut que tu définisses la valeur dans ton selectOneMenu. Cette valeur va pointer vers une propriété d'un bean qui conservera la valeur sélectionnée par l'utilisateur au moment de la soumission du formulaire (ou de l'appel ajax si tu utilises <a4j:support>)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <h:selectOneMenu value="#{monBean.maValeur}">
        ...
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    Ca c'est fait, lorsque je load la valeur assigné au Bean je me retrouve sur la bonne valeur dans la combo.
    Maintenant ce qu'il me manque c'est de pouvoir changer dynamiquement le contenu de la fenêtre des qu'il y a un changement dans la combo.

    Dans mon a4j:support j'ai le rerender de la partie qui m'intéresse et event="onchange".
    Ca ne semble pas marcher correctement... du moins, rien ne se passe...
    Il devrait normalement rentrer dans le setter du bean afin de mettre à jour la valeur mais... là, c'est balo, ca marche pas

  4. #4
    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
    Montre-nous ton code JSF...
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    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
     
    <h:form id="twoCalendar">
        <table>
           <tr><th>raison</th><th>Type dabsence</th><th>date de debut</th> <th>date de fin</th></tr>
           <c:forEach var="absence" items="#{personCtrl.absenceList}" >
    	   <tr>
    	      <td><h:inputText value="#{absence.reason}"/></td>
    	      <td><span class="dataCombo">
    		  <h:selectOneMenu value="#{absence.absenceTypeNumber}">
    		     <f:selectItems value="#{personCtrl.enumValue}"/>
    		        <a4j:support reRender="twoCalendar" event="onchange"/>
    		  </h:selectOneMenu>
    	      </span></td>
    	      <c:if test="#{absence.twoCalendar}">	
    		<td class="calendar"><a4j:outputPanel id="calendarBeg" layout="block" >
    		     <rich:calendar locale="#{scapeeCreateEventCtrl.locale}" value="#{absence.beginDate}"
    					popup="true"
    					datePattern="dd/M/yy HH:mm"
    					showApplyButton="true" cellWidth="24px" cellHeight="22px" style="width:10px"/>
    		</a4j:outputPanel></td>
    		<td class="calendar"><a4j:outputPanel id="calendarEnd" layout="block">
    		     <rich:calendar locale="#{scapeeCreateEventCtrl.locale}" value="#{absence.endDate}"
    					popup="true"
    					datePattern="dd/M/yy HH:mm"
    					showApplyButton="true" cellWidth="24px" cellHeight="22px" style="width:10px"/>
    		</a4j:outputPanel></td>
    	      </tr>
               </c:forEach>
           </table>
    </h:form>
    En gros, dans ma combo, si on sélectionne une valeur, je veux afficher (ou pas) une partie. A savoir le <c:if> le absence.twocalendar renvoie true seulement si la valeur de la combo est 3.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/12/2010, 10h12
  2. Megawidget Combobox - action sur changement de valeur
    Par Matmal11 dans le forum Tcl/Tk
    Réponses: 4
    Dernier message: 20/08/2009, 10h27
  3. Action sur changement d'enregistrement
    Par PapouDomi dans le forum IHM
    Réponses: 2
    Dernier message: 18/12/2008, 17h32
  4. Action sur changement de filtre
    Par passicon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2007, 14h07
  5. Réponses: 20
    Dernier message: 12/06/2007, 10h11

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