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 :

SelectOneMenu :population à partir d'une Base


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut SelectOneMenu :population à partir d'une Base
    Bonjour
    Je suis entrain de developper une application qui doit interagir avec une base de données.
    Le problème est ce que p:SelectOneMenu ne récupère pas les valeurs depuis la base.
    Je vous montre mon code
    Page JSF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
      <p:selectOneMenu onchange="submit()">
         <f:selectItems value="#{startingTestCtrl.model.listItemsMachine}" var="item" itemValue="#{item}" itemLabel="#{item}" />
        </p:selectOneMenu>
    Au niveau de mon MangedBean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @PostConstruct
        public void initCtrl() {
            //initialisation de selectOneMenu : pour la liste des machines 
            getModel().setListMachine(getTestsServices().ListMachines());
             List<SelectItem> listItems=new ArrayList<>();
     
            for (Machine m : getModel().getListMachine()) {
                listItems.add(new SelectItem(m, m.getName()));
            }
            getModel().setListItemsMachine(listItems);
    page TestServices.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public List<Machine> ListMachines(){
    //tm=une instance de testModule 
    return    tm.selectAllMachine();
       }
    TestModule.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     public List<Machine> selectAllMachine() {
      return em.createQuery("select m from Machine m").getResultList();
        }
    Merci pour vos aides

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    Citation Envoyé par ibtiag Voir le message
    Bonjour
    Je suis entrain de developper une application qui doit interagir avec une base de données.
    Le problème est ce que p:SelectOneMenu ne récupère pas les valeurs depuis la base.
    Je vous montre mon code
    Page JSF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
     
      <p:selectOneMenu onchange="submit()">
         <f:selectItems value="#{startingTestCtrl.model.listItemsMachine}" var="item" itemValue="#{item}" itemLabel="#{item}" />
        </p:selectOneMenu>
    Au niveau de mon MangedBean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @PostConstruct
        public void initCtrl() {
            //initialisation de selectOneMenu : pour la liste des machines 
            getModel().setListMachine(getTestsServices().ListMachines());
             List<SelectItem> listItems=new ArrayList<>();
     
            for (Machine m : getModel().getListMachine()) {
                listItems.add(new SelectItem(m, m.getName()));
            }
            getModel().setListItemsMachine(listItems);
    page TestServices.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public List<Machine> ListMachines(){
    //tm=une instance de testModule 
    return    tm.selectAllMachine();
       }
    TestModule.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     public List<Machine> selectAllMachine() {
      return em.createQuery("select m from Machine m").getResultList();
        }
    Merci pour vos aides
    si j'ai bien compris ton problème est que ton liste déroulant s’affiche vide . c'est ça ??

  3. #3
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut
    Oui effectivement

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    tout d'abord essayer de déclarer ton liste avant @PostConstruct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private List <Machine> ListMachines ;
    et n'oubliez pas les getter et les setter et dans votre methode init () :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      ListMachines= TestModule.selectAllMachine();
    et dans votre page XHTML ( le plus important parce que je vois que le problème devient d'ici )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:outputText value="ListMachine" />
    							<p:selectOneMenu value="#{startingTestCtrl.model.ListMachines}"  >
    								<f:selectItem itemLabel="select one..." itemValue="" />
    								<f:selectItems value="#startingTestCtrl.ListMachines}" var="cat" itemValue="#{cat}" itemLabel="#{cat.ip_address}"/>
    							</p:selectOneMenu>

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    ahhh attend je vois que vous avez deux tables en relation 1..*
    et tu veux afficher la listes des machine dans la page Model

    si c'est le cas vous êtes dans le mauvais chemin et tu dois changer la méthode complètement

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut,
    est ce que ceci te donne un nombre superieur a zero:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getTestsServices().ListMachines().list();
    dans ton MangedBean?
    2. quel scope as-tu pour tonMangedBean?

    Eric

  7. #7
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut
    Merci Monta_amri pour votre réponse.
    J'ai essayé ce que vous avez recommandé mais malheureusement ça marche pas.
    jeffray03 : oui , c'est strictement supérieur à zero.
    Mon scope est "Session"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @ManagedBean
    @SessionScoped
    public class startingTestCtrl implements Serializable{
     private static final long serialVersionUID = 1L;

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    bon tu m'a pas répondre à mon question pour puis-je vous aidez

    si non essayez avec ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <p:selectOneMenu value="#{startingTestCtrl.model.ListMachines}"  >
    								<f:selectItem itemLabel="select one..." itemValue="" />
    								<f:selectItems value="#startingTestCtrl.ListMachines}" var="cat" itemValue="#{cat}" itemLabel="#{cat.nom}"/>
    							</p:selectOneMenu>
    au lieux de ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <p:selectOneMenu value="#{startingTestCtrl.model.ListMachines}"  >
    	<f:selectItems value="#startingTestCtrl.ListMachines}" var="cat" itemValue="#{cat}" itemLabel="#{cat.ip_adresss}"/>
    							</p:selectOneMenu>

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    et essayez avec Viewscoped au lieux de SessionScoped

  10. #10
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut
    Je n'ai pas bien compris votre question.
    Bon , j'ai modifié un peu mon code.
    j'ai supprimé la classe Model.
    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
     
    @ManagedBean
     @ViewScoped
    public class startingTestCtrl implements Serializable{
            private static final long serialVersionUID = 1L;
     private List<Machine> listMachine;
     private List<SelectItem> listItemsMachine=new ArrayList<>();
     
        public List<Machine> getListMachine() {
            return listMachine;
        }
     
        public void setListMachine(List<Machine> listMachine) {
            this.listMachine = listMachine;
        }
     
        public List<SelectItem> getListItemsMachine() {
            return listItemsMachine;
        }
     
        public void setListItemsMachine(List<SelectItem> listItemsMachine) {
            this.listItemsMachine = listItemsMachine;
        }
         @EJB
        public TestServices testsServices;
     
     
        public TestServices getTestsServices() {
            return testsServices;
        }
     
         @PostConstruct
        public void initCtrl() {
     
     
        listMachine=testsServices.ListMachines();
     
     
            for (Machine m : listMachine) {
               String itemLabel = m.getName()   ;
               String itemValue = m.getName();
                listItemsMachine.add(new SelectItem(itemValue,itemLabel));
            }
     
        }
    et voila mon code JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <p:selectOneMenu value="#{startingTestCtrl.listMachine}"  >
    	<f:selectItem itemLabel="select one..." itemValue="" />
            <f:selectItems value="#{startingTestCtrl.listMachine}" var="cat" itemValue="#{cat}" itemLabel="#{cat.name}"/>
    </p:selectOneMenu>
    ça marche pas encore

  11. #11
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut
    est ce que j'ai besoin d'un certain converter ?

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    si vous avez une relation avec deux tables et tu veux afficher le contenu de la deuxième table dans une liste déroulant avec les composant de la première tables bien sur oui .

    si non quelque instant et je vais t'envoyer un code pour votre cas simple

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    dans votre class service tu dois trouver ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public List<Machine> selectAllMachine() {
    	Query query = entityManager.createQuery("select m from Machine m e");
    		return query.getResultList();
        }

    dans le 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
     
     
    @ManagedBean
    @ViewScoped
    public class MachinBean implements Serializable{
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
     
    	@EJB
    	Machineservice machineservice ;
     
     
     
    private List <Machine> ListMachines ;
    private Machine mach ;
     
     
     
    	public MachinBean() {
     
    	}
     
    	@PostConstruct
    	 public void  init () {
     
     
     
     
     
    		 ListMachines = machineservice.selectAllMachine();
    mach = new Machine();
     
    }


    et dans la page xhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    	<h:outputText value="Machine name :" />
    							<p:selectOneMenu value="#{MachinBean.mach.name}"  >
    								<f:selectItem itemLabel="select one..." itemValue="" />
    								<f:selectItems value="#{MachinBean.ListMachines}" var="cat" itemValue="#{cat}" itemLabel="#{cat.nom}"/>
    							</p:selectOneMenu>


    Ps : ne prenez pas ce code copier coller . c'est un exemple et essayer de le pratiquer selon vos coordonné et les attributs que vous avez

    - n'oubliez pas les getter et les setter

  14. #14
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut
    Merci monta_amri pour votre reponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    mach = new Machine();
    Pourquoi vous insérez cette ligne ?

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Par défaut
    j'ai déclarer un instance mach de type machine et depuis cette instance tu vas faire appel à vos attribut chaque fois


    est ce que ça marche ??

  16. #16
    Membre confirmé
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Décembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 48
    Par défaut
    non ça marche pas avec le nouveau code

Discussions similaires

  1. remplir une liste deroulante (selectOneMenu) à partir d'une base de données
    Par soniyo dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 04/06/2012, 16h51
  2. réplication à partir d'une base de données heterogène
    Par elbennaoui dans le forum Réplications
    Réponses: 1
    Dernier message: 16/11/2005, 16h05
  3. afficher une image à partir d'une base de données access
    Par zidenne dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/11/2005, 11h41
  4. envoi automatisé de mails à partir d'une base postgresql
    Par youn608 dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 15/02/2005, 09h06

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