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 :

Les valeurs d'une ComboBox en JSF


Sujet :

JSF Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 81
    Points
    81
    Par défaut Les valeurs d'une ComboBox en JSF
    Bonjour,
    Je débute en JSF.
    Mon exemple coté JSP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:selectOneMenu  id="combo"  value="#form.salarieValue}"> 
         <f:selectItems value="#{form.salariesElements}" />
    </h:selectOneMenu>
    Côté 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
     
    public class Form {
     
    	private boolean viewInfosIsRendered = false;
    	private List<SelectItem> salariesElements;
    	private String salarieValue;
     
    	public Form() {		
    	}
     
    	public List<SelectItem> getSalariesElements() {
    		// la liste des employs est demandée à la couche métier
    		List<Employe> employes = metier.findAllEmployes();
    		// on génère la liste des éléments du combo
    		if (salariesElements == null) {
    			salariesElements = new ArrayList<SelectItem>();
    			for (Employe empl : employes) {
    				salariesElements.add(new SelectItem(empl.getSS(), empl.getNom()));
    			}
    		}
    		return salariesElements;
    	}
     
    	public void setSalariesElements(List<SelectItem> salariesElements) {
    		this.salariesElements = salariesElements;
    	}
     
    	public String getSalarieValue() {
    		return salarieValue;
    	}
     
    	public void setSalarieValue(String salarieValue) {
    		this.salarieValue = salarieValue;
    	}
     
    }
    J'arrive à afficher dans ma combo les noms des salariés. Par contre quand je sélectionne un nom dans la combo, je veux que la valeur correspondante à ce nom en l'occurrence ici le numéro ss soit envoyée au bean.
    En gros j'ai :
    employeId | employeName
    1 | Dupont
    2 | Duront
    3 | autre nom
    ........................
    Si je sélectionne Dupont je veux envoyer 1, si Duront envoyer 2....
    mais je remarque que la méthode setSalarieValue() n'est jamais appelée.
    Je vous remercie pour votre aide.

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Youuuh tu vas pas pouvoir, c'est toute la galère avec ce composant, t'es obligé de te fier à la valeur sélectionnée et non à son id.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Youuuh tu vas pas pouvoir, c'est toute la galère avec ce composant, t'es obligé de te fier à la valeur sélectionnée et non à son id.

    Bonjour et merci pour la réponse.
    Tu peux m'expliquer un peu STP?
    La valeur sélectionnée on l'a dans le setter?

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Tu fais un get sur l'objet que t'as mis dans l'attribut du composant select, coté java et tu as ta valeur selectionnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Truc trucSelect = monObjectForm.getSalarieValue
    voila

  5. #5
    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
    Points : 7 275
    Points
    7 275
    Par défaut
    Bonjour,

    Je n'ai pas tout compris à ce que disait DevServlet, mais il n'y a vraiment aucun problème à faire ce que tu veux, c'est même le but du composant !!

    Donc ton code est correct, à l'exception qu'il manque un { dans ton attribut value:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:selectOneMenu  id="combo"  value="#form.salarieValue}">
    doit devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:selectOneMenu  id="combo"  value="#{form.salarieValue}">
    Cela dit, c'est étonnant qu'il n'ait pas râlé (sauf si c'est une erreur de copie lors de la saisie du message).
    Sinon, est-ce que ton selectOneMenu est bien dans un formulaire ?

    Et quelle est l'action qui va soumettre ton formulaire (et donc mettre à jour la valeur de SS dans le bean) ? Un bouton ?

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Bonjour,

    Je n'ai pas tout compris à ce que disait DevServlet, mais il n'y a vraiment aucun problème à faire ce que tu veux, c'est même le but du composant !!

    Donc ton code est correct, à l'exception qu'il manque un { dans ton attribut value:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:selectOneMenu  id="combo"  value="#form.salarieValue}">
    doit devenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:selectOneMenu  id="combo"  value="#{form.salarieValue}">
    Cela dit, c'est étonnant qu'il n'ait pas râlé (sauf si c'est une erreur de copie lors de la saisie du message).
    Sinon, est-ce que ton selectOneMenu est bien dans un formulaire ?

    Et quelle est l'action qui va soumettre ton formulaire (et donc mettre à jour la valeur de SS dans le bean) ? Un bouton ?
    Bonjour et merci pour ta réponse.
    Il n'y a pas d'erreur c'est juste un oubli de ma part.
    Mon selectOneMenu est bien dans un formulaire "form".
    Ma combo est chargé au démarrage.
    Après j'ai un bouton qui appelle une méthode dans le bean. Et à cette méthode que je veux passer la valeur sélectionnée mais je ne sais pas comment faire?
    La méthode appelée est comme ceci :

    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
     
    private String SalarieValue;
     
    public String getSalarieValue() {
    		return SalarieValue;
    	}
     
    	public void setSalarieValue((String SalarieValue) {
    		this.SalarieValue= SalarieValue;
    	}
     
    public String infoSalaire() {
    		logger.info("info salaire");
    		viewInfosIsRendered = true;
    		Employe emp = metier.findEmplyeById(getSalarieValue());
    		setNom(emp.getNom());
    		setPrenom(emp.getPrenom());
    		setAdresse(emp.getRue());	
    		setVille(emp.getVille());
    		setCodePostal(emp.getCodePostal());
    		setIndice(emp.getIndemnite().getIndice());
     
    		return null;
    	}
    Voilà.

  7. #7
    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
    Points : 7 275
    Points
    7 275
    Par défaut
    Et ça ne marche pas ?
    Quel est le code de ton bouton ? A priori, ce doit être quelque chose comme ça :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton value="..." action="#{form.infoSalaire}"/>

    Quand JSF soumet le formulaire, il va automatiquement définir la valeur de l'employé choisi en appelant setSalarieValue(String id).

    Si le setter n'est pas appelé, peut être qu'il y a une erreur quelque part. Ajouter <h:messages/> au début de ton formulaire, pour afficher les éventuelles erreurs de validation.

    Sinon, montre nous le code de toute ta page...

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Et ça ne marche pas ?
    Quel est le code de ton bouton ? A priori, ce doit être quelque chose comme ça :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:commandButton value="..." action="#{form.infoSalaire}"/>

    Quand JSF soumet le formulaire, il va automatiquement définir la valeur de l'employé choisi en appelant setSalarieValue(String id).

    Si le setter n'est pas appelé, peut être qu'il y a une erreur quelque part. Ajouter <h:messages/> au début de ton formulaire, pour afficher les éventuelles erreurs de validation.

    Sinon, montre nous le code de toute ta page...
    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
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     
    <script language="javascript">
      function raz(){
     
      }
    </script>
     
    <f:view>
     
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<title>JSF</title>
    		<LINK rel="stylesheet" href="../styles.css" type="text/css" />
    	</head>
     
    	<body>
     
    		<h:form>
    			<h1>
    				<h:outputText value="#{msg['form.titre']}" />
    			</h1>
    			<hr />
    			<h:messages/>
     
    			<h:panelGrid border="0" columns="6">
    				<!-- ligne 1 -->
    				<h:outputText value="#{msg['form.comboEmployes.libelle']}" />
    				<h:outputText value="#{msg['form.heuresTravaillees.libelle']}" />
    				<h:outputText value="#{msg['form.joursTravailles.libelle']}" />
    				<h:outputText value="" />
    				<h:outputText value="" />
    				<!-- ligne 2 -->
    				<h:selectOneMenu  id="combo" styleClass="combo" value="#{form.salarieValue}" immediate="true"> 
    				    <f:selectItems value="#{form.listeSalariesElements}" />
    				</h:selectOneMenu>
     
    				<h:inputText id="heuresTravaillees" 
    					value="#{form.heuresTravaillees}" required="true"
    					requiredMessage="#{msg['form.heuresTravaillees.required']}"
    					validatorMessage="#{msg['form.heuresTravaillees.validation']}">
    					<f:validateDoubleRange minimum="0" maximum="300"/>
     
    				</h:inputText>				
     
    				<h:inputText  id="joursTravailles" 
    					value="#{form.joursTravailles}" required="true"
    					requiredMessage="#{msg['form.joursTravailles.required']}"
    					validatorMessage="#{msg['form.joursTravailles.validation']}">
    					<f:validateLongRange minimum="0" maximum="31" />
    				</h:inputText>
     
    				<h:commandButton value="#{msg['form.btnSalaire.libelle']}" action="#{form.infoSalaire}" immediate="true"/>
    				<h:commandButton value="#{msg['form.btnRaz.libelle']}"	action="#{form.raz}" onclick='raz()' immediate="true" />
    			</h:panelGrid>
    			<hr />
     
    			<f:subview id="vueSaisies" rendered="#{form.viewInfosIsRendered}">
    			<!-- ligne 3 -->
    			<br>
    			<h:outputText value="#{msg['form.infos.employe']}" />
    			<br> 			
    			<h:panelGrid  border="0" columns="3">
    				<h:outputText value="#{msg['form.employe.nom']}" styleClass="libelle"/>
    				<h:outputText value="#{msg['form.employe.prenom']}" styleClass="libelle"/>
    				<h:outputText value="#{msg['form.employe.adresse']}" styleClass="libelle"/>				
    				<h:outputText value="#{form.nom}" styleClass="info"/>
    				<h:outputText value="#{form.prenom}" styleClass="info"/>
    				<h:outputText value="#{form.adresse}" styleClass="info"/>				
    			</h:panelGrid>
     
    			<h:panelGrid border="0" columns="3">
    				<h:outputText value="#{msg['form.employe.ville']}" styleClass="libelle" />
    				<h:outputText value="#{msg['form.employe.codePostal']}" styleClass="libelle"/>
    				<h:outputText value="#{msg['form.employe.indice']}" styleClass="libelle"/>				
    				<h:outputText value="#{form.ville}" styleClass="info"/>
    				<h:outputText value="#{form.codePostal}" styleClass="info"/>
    				<h:outputText value="#{form.indice}" styleClass="info"/>				
    			</h:panelGrid>
     
    			</f:subview>
     
    		</h:form>
    	</body>
     
    </f:view>

  9. #9
    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
    Points : 7 275
    Points
    7 275
    Par défaut
    Enlève les immediate="true" sur ton selectOneMenu ainsi que sur ton bouton.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Enlève les immediate="true" sur ton selectOneMenu ainsi que sur ton bouton.
    ça marche, je te remercie beaucoup pour ton aide.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Chargement combos
    Slt Romaintaz mon souci est que je veux pouvoir charger une combo a partir de la sélection d'une autre et je n'y arrive pas,la méthode qui est chargé de remplir la séconde combo n'est jamais appelée.
    voici le code de ma page jsf:
    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
    <%-- 
        Document   : newjsf
        Created on : 27 déc. 2011, 09:44:10
        Author     : Administrateur
    --%>
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
     
    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
    <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
    <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
    <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
    <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
     
    <f:view>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                <title>JSP Page</title>
            </head>
            <body>
                <h:form prependId="false">
                    <a4j:outputPanel ajaxRendered="true">
                    <h:messages/> 
                    </a4j:outputPanel>
                    <h:panelGrid columns="2">
                        <h:selectOneMenu id="firstDropDown" value="#{acquisitionBean.selected.libelle_cat}">
                            <f:selectItems value="#{acquisitionBean.list_categories}" />
                            <a4j:support event="onchange" reRender="secondDropDown"
                                         immediate="true" actionListener="#{acquisitionBean.chargerScategorie}" />
                        </h:selectOneMenu>
     
                        <h:selectOneMenu id="secondDropDown" value="#{acquisitionBean.sous_cat_selected.libelle_scat}">
                            <f:selectItems value="#{acquisitionBean.list_sous_categories}" />
                        </h:selectOneMenu>
                    </h:panelGrid>
                </h:form>
            </body>
        </html>
    </f:view>
    et le code de la fonction qui doit remplir la 2e combo:
    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
    public void chargerScategorie(ActionEvent e) {
     
     
            try {
     
                String[] tab = selected.getLibelle_cat().split(" ");
                Mysql Ms = new Mysql();
                String Sql = "SELECT * FROM sous_categories_assurances where id_cat=" + Integer.parseInt(tab[0]);
                    System.out.println("Requete Sql:"+Sql);
                ResultSet Rs = Ms.executeSelect(Sql);
     
                // **************Initialiser les elts du formulaire ********
                //List_sous_categorie = new ArrayList<Clss_sous_categories>();
                List_sous_categories = new ArrayList<SelectItem>();
                sous_cat_selected = new Clss_sous_categories();
     
                if (getMontant_com() == 0) {
                    setMontant_com(0);
                }
                //***********************************************************
                while (Rs.next()) {
     
                    System.out.println("Dedans");
                    sous_cat_selected.setId_cat(Rs.getInt("id_scat"));
                    sous_cat_selected.setLibelle_scat(Rs.getString("libelle_scat"));
                    sous_cat_selected.setMontant(Rs.getInt("montant"));
                    sous_cat_selected.setId_scat(Rs.getInt("id_cat"));
     
                    //List_sous_categorie.add(sous_cat_selected);
                    List_sous_categories.add(new SelectItem(sous_cat_selected));
                    sous_cat_selected = new Clss_sous_categories();
     
                }
                Ms.CloseMySql();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

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

Discussions similaires

  1. Rafraichir les valeurs d'une combobox en l'ouvrant
    Par MartinezGarcia dans le forum jQuery
    Réponses: 1
    Dernier message: 23/08/2011, 17h07
  2. [OL-2010] récupérer les valeurs d'une combobox
    Par benou72 dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 03/02/2011, 11h48
  3. Récupérer les valeurs d'une combobox
    Par Many31 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/07/2009, 15h16
  4. choix d'un radioboutton qui change les valeurs d'une comboBox
    Par poussin_44 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 04/07/2007, 09h10
  5. afficher les valeur d'une requete dans une combobox
    Par carlos587261 dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/06/2007, 08h45

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