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 :

Comment remplir une Dropdown sans passer par les beans


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 26
    Points
    26
    Par défaut Comment remplir une Dropdown sans passer par les beans
    Bonjour,
    Dans le cadre de la création d'une page, la présence d'une dropdown est requise.
    Je souhaiterai savoir s'il était possible de remplir la dropdown list sans passer par un bean, juste en récupérant une arraylist contenant les données désirées.
    J'ai cherché un peu partout sur le net, mais à chaque fois, on en revient à des beans.
    Est ce que c'est possible ? et si oui comment?
    Ou si vous avez de bon tuto à partager.
    Merci.

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut
    Citation Envoyé par Evenmor Voir le message
    Je souhaiterai savoir s'il était possible de remplir la dropdown list sans passer par un bean, juste en récupérant une arraylist contenant les données désirées.
    Euh ...oui, depuis une liste mais cette liste tu la récupères d'où ? Elle ne peut pas être dans le vide, il faut qu'elle soit dans un conteneur (Java est un langage OO plus ou moins strict, donc pas de variables globales par exemple) et ce conteneur est le bean dont tu parles.

    Mais je ne suis pas sûr d'avoir compris ton problème

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    En fait, voilà à quoi ressemble mon code :

    Public void Init_Page(){
    // List créé à partir d'une méthode qui effectue une selection en BD
    ArrayList list = common.getAgency();
    DDagency ???
    // Reste du code pour placer les éléements dans la dropdown DDagency
    }
    Et j'aimerais placer les infos dans ma dropdown.
    Mais je ne comprend pas tres bien comment faire.

    PS: Sorry, mes questions semblent peut etre idiote.
    Mais je viens du milieu Microsoft et avec visual studio...ce n'est pas du tout pareil
    Merci pour l'aide

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Oki, donc, il faut transformer ta liste originale vers une liste de type SelectItem.

    Exemple, tu as une liste de personnes (Person(id, name, age)), tu peux la mapper ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public List<SelectItem> getItems(){
      List<Person> persons = DieuSeulSaitDouTuLaRetrouve.
      List<SeletItem> res = new ArrayList<SelectItem>(persons.size());
      for(Person p:persons){
        res.add(new SelectItem(p.getId(), p.getName());
      }
      return res;
    }
    ListItem prend 2 paramètres qui correspondent exactement à ceux de l'élément HTML <option>:
    value: ce qui sera affecté au value du selectOneMenu
    label: ce qui sera affiché dans l'élement de la liste.

    et tans ta page JSF:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:selectOneMenu value="#{tonBean.selection}">
      <f:selectItems value="#{tonBean.items}" />
    </h:selectOneMenu>
    Ici par exemple, disons que person.id est de type Long, donc le champ value de tonBean doit aussi être de type long car on a utilisé person.id comme value de l'item.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Est ce que ca implique que je doive changer la JSF?
    Parceque ce dans ce qui est généré automatiquement j'ai
    <ui:dropDown binding="#{AssessingAgents.DDAgentList}" id="DDAgentList" items="#{AssessingAgents.DDAgentListDefaultOptions.options}" label="Agent " labelLevel="1" style="left: 24px; top: 120px; position: absolute"/>


    <h:selectOneMenu binding="#{AssessingAgents.DDAgencyList}" id="DDAgencyList" style="left: 24px; top: 72px; position: absolute">
    <f:selectItems binding="#{AssessingAgents.dropdown1SelectItems}" id="dropdown1SelectItems" value="#{AssessingAgents.dropdown1DefaultItems}"/>
    </h:selectOneMenu>
    (J'ai mis ici le code des 2 types de dropdown que j'ai dans la palette)

    Sinon quand tu dis "tonbean", c'est quoi? c'est le managed bean? ou c'est la classe person dans ton exemple.

  6. #6
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonsoir,
    Je vois que tu utilises NetBeans et ses editeurs visuels pour travailler avec JSF ...
    Ce n'engage que moi, mais je crois que c'est une très mauvaise façon de faire ... ça te génère des tonnes de code inutile, ça utilise intensivement le binding de composants (truc au moins moooche à mon avis) ...
    Pire encore, tu ne comprends pas ce qui se passe réellement dans ta page et dans tes beans
    Ce n'est pas comme ça qu'on va apprendre JSF sur de bonnes bases.

    Mais bon, je comprends que venant du monde Microsoft et Visual Studio, c'est la méthode de procéder


    Bref, tonBean est le managed bean, pas la classe Person.

    P.S.: Je ne veux aucunement lancer un troll, d'avance mes excuses pour ceux qui verront le contraire.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 31
    Points : 15
    Points
    15
    Par défaut
    Ce petit point négatif a été corrigé sous netbeans 6.1 (à savoir le binding auto de composant). Pour plus d'infos si ca interesse quelqu'un > http://www.netbeans.org/community/ar...etbeans61.html
    Voila voila

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Ok,
    Merci a vous 2.
    J'ai reussit à me dépatouiller avec cette histoire de bean.
    thanks a lot

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/01/2010, 18h43
  2. Réponses: 3
    Dernier message: 02/08/2007, 14h30
  3. Réponses: 7
    Dernier message: 28/03/2007, 13h57
  4. comment executer une requete sans passer par le recordset ?
    Par php4life dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/12/2006, 20h57
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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