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 :

Récupérer la valeur d'un h:selectOneMenu dans le managedBean (JSF2 GF3.1.2.2).


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Par défaut Récupérer la valeur d'un h:selectOneMenu dans le managedBean (JSF2 GF3.1.2.2).
    Bonjour,
    je n'arrive pas récupérer la valeur de mon champs circonscription. Cela fait plusieurs jours que je fouille sur le net. Peut etre n'ai je pas fait un truc tout simple?

    voici mon code choixRcMoteur.xhtml

    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
     
     
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core">
        <h:head>
            <title>Diagnostique RC - Choix d un RC</title>
        </h:head>
        <h:body>
            <h1>Diagnostique Réservoirs de Chasse</h1>
            <h:link value="accueil" outcome="index"/>&nbsp;&gt;&nbsp;Choisir&nbsp;un&nbsp;RC.
            <br/>
            <f:view>
                <h:form id='formulaire'>
                    <h2><h:outputText value="Choisir un RC"/></h2>
                    <h:panelGrid columns='2' border="1">
     
                        <h:panelGroup>
                            <h:outputText value="circonscription :"/>
                        </h:panelGroup>
     
                        <h:panelGroup>
     
                            <h:selectOneMenu value="choixRcBean.cionSelected">
                                <f:selectItems value="#{choixRcBean.listeCion}" />
                            </h:selectOneMenu>
     
                        </h:panelGroup>
     
                     </h:panelGrid>
     
                     <h:commandButton id="getListe" action="#{choixRcBean.getListe()}" value="Afficher la liste"/>
     
                 </h:form>
            </f:view>
     
        </h:body>
    </html>
    voici mon managedBean

    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    package mdp.dpe.stea.managedbeans;
     
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.annotation.PostConstruct;
    import javax.ejb.EJB;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
    import javax.faces.model.SelectItem;
    import mdp.dpe.stea.supervision.ejb.ChoixRcService;
    import mdp.dpe.stea.supervision.entity.CtrlArrondissement;
    import mdp.dpe.stea.supervision.entity.CtrlCion;
    import mdp.dpe.stea.supervision.entity.Rctigre;
     
     
    /*
                            <!--
                            <h:selectOneMenu id="cionClt" value="choixRcBean.cionSelected" converter="ctrlCionConverter">
                                <f:selectItems id="choixCion" value="#{choixRcBean.listeCion}" 
                                               var="circ" itemLabel="#{circ.libCion}" itemValue="#{circ.idCion}"/>
                            </h:selectOneMenu>
                            -->
    */
     
    /**
     *
     * @author franckotseu
     */
    @ManagedBean(name = "choixRcBean")
    @RequestScoped
    public class ChoixRcMBean {
        @EJB
        private ChoixRcService choixRcService;
     
        private List<SelectItem> listeCion;
     
        //les valeurs choisies
        private String cionSelected; 
     
        private List<Rctigre> listeRcAffichee;
        // =========================================================================
        // = Constructeur                                                          =
        // =========================================================================
        public ChoixRcMBean() {
     
        }
        @PostConstruct
        public void init(){
            listeCion = getListeCion();
        }
        // =========================================================================
        // = getters setters                                                       =
        // =========================================================================
        public List<SelectItem> getListeCion() {
            List<SelectItem> retour = new ArrayList<SelectItem>();
            List<CtrlCion> listeToutesLesCions = choixRcService.getAllCion();
            for(CtrlCion c : listeToutesLesCions){
                retour.add(new SelectItem(c.getIdCion().intValue(), c.getLibCion()));
            }
            return retour;
        }
     
        public void setListeCion(List<SelectItem> listeCion) {
            this.listeCion = listeCion;
        }
     
        public String getCionSelected() {
            return cionSelected;
        }
     
        public void setCionSelected(String selectedCion) {
            this.cionSelected = selectedCion;
        }
     
     
     
        public List<Rctigre> getListeRcAffichee() {
            return listeRcAffichee;
        }
     
        public void setListeRcAffichee(List<Rctigre> listeRcAffichee) {
            this.listeRcAffichee = listeRcAffichee;
        }
     
     
        // =========================================================================
        // = Fonctions utiles pour la liste                                        =
        // =========================================================================
        public String getListe(){
            Logger.getLogger(ChoixRcMBean.class.getName()).log(Level.INFO, "choix de la cion = {0}", cionSelected);
     
            if (cionSelected!=null) Logger.getLogger(ChoixRcMBean.class.getName()).log(Level.INFO, "choix de la cion après conversion = {0}", cionSelected);
     
     
     
            listeRcAffichee = choixRcService.getRc(null, null, "", null);
     
            return "ChoixRcList";
        }
     
        public CtrlCion findCionById(Short idCion){
            return (idCion!=null?choixRcService.getCion(idCion):null);        
        }
     
        public CtrlArrondissement findArrondissementById(Short idArrondissement){
            return (idArrondissement!=null?choixRcService.getArrondissement(idArrondissement):null);
        }
     
    }
    à chaque fois que je clique sur le bouton de validation : j'ai le message suivant dans les logs : INFO: choix de la cion = null
    ce qui m'empêche de filtrer sur la cion.

    J'aimerai savoir pourquoi j'ai null dans ce message et pas un chiffre (l'id) ou un texte (le libelle)

    D'avance merci pour toutes vos remarques
    Franck.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Par défaut
    reBonjour,

    j'ai touvé une alternative dans un discussion sur un autre site :
    -1- ajouter un id au selectOneMenu (j'ai mis lacion)
    -2- récupérer la valeur au moyen d'une ligne de code dans le managedbean

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:selectOneMenu id="lacion" value="choixRcBean.cionSelected">
        <f:selectItems value="#{choixRcBean.listeCion}" />
    </h:selectOneMenu>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        
    public String getListe(){
            Logger.getLogger(ChoixRcMBean.class.getName()).log(Level.INFO, "choix de la cion = {0}", cionSelected);
            
            String laCion = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("formulaire:lacion");
            Logger.getLogger(ChoixRcMBean.class.getName()).log(Level.INFO, "choix de lacion = {0}", laCion);
       
            listeRcAffichee = choixRcService.getRc(null, null, "", null);
            
            return "ChoixRcList";
        }
    Ah oui en meme temps j'ai ajouté les traces du phasage JSF trouvées sur la faq et curieusement mes fonctions getCionSelected et setCionSelected ne sont jamais appelées.
    je le sais car j'ai ajouté un log dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public String getCionSelected() {
            Logger.getLogger(ChoixRcMBean.class.getName()).log(Level.INFO, "choix de la getCionSelected = {0}", cionSelected);
            return cionSelected;
        }
     
        public void setCionSelected(String selectedCion) {
            Logger.getLogger(ChoixRcMBean.class.getName()).log(Level.INFO, "choix de la setCionSelected à {0}", selectedCion);
            this.cionSelected = selectedCion;
        }
    et voici les traces (sans rien dans la phase 4 UPDATE_MODEL_VALUES) :

    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
    INFO: beforePhase RESTORE_VIEW 1
    INFO: afterPhase RESTORE_VIEW 1
    INFO: beforePhase APPLY_REQUEST_VALUES 2
    INFO: afterPhase APPLY_REQUEST_VALUES 2
    INFO: beforePhase PROCESS_VALIDATIONS 3
    INFO: afterPhase PROCESS_VALIDATIONS 3
    INFO: beforePhase UPDATE_MODEL_VALUES 4
    INFO: afterPhase UPDATE_MODEL_VALUES 4
    INFO: beforePhase INVOKE_APPLICATION 5
    INFO: choix de la cion = null
    INFO: choix de lacion = 3
    INFO: afterPhase INVOKE_APPLICATION 5
    INFO: beforePhase RENDER_RESPONSE 6
    INFO: afterPhase RENDER_RESPONSE 6
    Etant débutant en JSF2, Je me demande si cette façon de faire est bien normale...
    Naivement je pensais que le modèle du managedBean se mettait à jour sans mon aide...
    Cordialement, Franck

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/05/2006, 19h02
  2. Réponses: 11
    Dernier message: 27/03/2006, 09h25
  3. Réponses: 5
    Dernier message: 08/03/2006, 22h20
  4. Récupérer un valeur de zone de texte dans OnClick
    Par navis84 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 21/09/2005, 15h13
  5. Réponses: 2
    Dernier message: 17/06/2005, 13h38

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