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

Wicket Java Discussion :

DropDownChoice et RendererChoice


Sujet :

Wicket Java

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut DropDownChoice et RendererChoice
    Bonjour,

    Toujours débutant en wicket et toujours en galère. J'ai une nouvelle question.

    J'ai une DropDownChoice alimentée avec une liste de bean contenant (pour simplifier) une paire clef/valeur.

    J'ai besoin que mes balises <option> prennent l'id correspondant à la clef du bean et que la valeur affichée correponde à la valeur du bean.

    Pour cela j'utilise un choiceRenderer que je passe à la construction de ma dropDownChoice. Petit problème, j'ai une exception :

    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
     
    15:52:53,548 ERROR RequestCycle(1521) - The expression 'idZone' is neither an index nor is it a method or field for the list class java.util.ArrayList
    org.apache.wicket.WicketRuntimeException: The expression 'idZone' is neither an index nor is it a method or field for the list class java.util.ArrayList
            at org.apache.wicket.util.lang.PropertyResolver.getGetAndSetter(PropertyResolver.java:373)
            at org.apache.wicket.util.lang.PropertyResolver.getObjectAndGetSetter(PropertyResolver.java:287)
            at org.apache.wicket.util.lang.PropertyResolver.getValue(PropertyResolver.java:90)
            at org.apache.wicket.markup.html.form.ChoiceRenderer.getIdValue(ChoiceRenderer.java:145)
            at org.apache.wicket.markup.html.form.AbstractSingleSelectChoice.getModelValue(AbstractSingleSelectChoice.java:166)
            at org.apache.wicket.markup.html.form.FormComponent.getValue(FormComponent.java:896)
            at org.apache.wicket.markup.html.form.AbstractChoice.onComponentTagBody(AbstractChoice.java:353)
            at org.apache.wicket.Component.renderComponent(Component.java:2619)
            at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1512)
            at org.apache.wicket.Component.render(Component.java:2450)
            at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1414)
            at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1577)
    J'imagine que j'ai encore un petit souci de modele. Je pensais que en ayant un CompoundPropertyModel sur mon form, je n'ai plus besoin d'en définir pour chaque nouveau composant. Mais je dois me planter

    Voici mon CompoundPropertyModel lié à la page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    beanPage.setListeZones(listeZonesBean);
     
    		CompoundPropertyModel pageModel = new CompoundPropertyModel(beanPage);
     
    		Form form = new Form("form", pageModel) {...
    Voici le code de ma dropDownChoice :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IChoiceRenderer choiceRenderer = new ChoiceRenderer<ZoneBean>("nom", "idZone");
     
    		DropDownChoice<ZoneBean> ddZones = new DropDownChoice<ZoneBean>("listeZones", beanPage.getListeZones(), choiceRenderer);
    Si besoin, j'avais déjà posté le reste du code dans un post précédent :
    http://www.developpez.net/forums/d99...oice-listview/

    J'ai eu beau chercher sur google, rien de trouvé. Merci d'avance

  2. #2
    Membre expérimenté

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 1 374
    Points
    1 374
    Par défaut
    bonjour

    de façon générale, personnellement, je recommande d'éviter le CompoundPropertyModel, liant de façon implicite le nom des champs et les identifiants. Un PropertyModel permet une bien plus saine séparation.

    A propos de ChoiceRenderer (que je ne connaissais pas ), on lit dans sa javadoc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     new DropDownChoice<User>("users", new Model<User>(selectedUser), listOfUsers,
     	new ChoiceRenderer<User>("name"))
     
     
    creates a DropDownChoice of users and the display value will be looked up by property expression ("name") and the id the index of the object in the ListOfUsers
     
     new DropDownChoice<User>("users", new Model<User>(selectedUser), listOfUsers,
     	new ChoiceRenderer<User>("name", "id"))
     
     
    creates a DropDownChoice of users and the display value will be looked up by property expression ("name") and the id will be looked up by the property expression "id"
    => que contient listeZonesBean ? Est ce bel et bien une liste d'objets (de type ZoneBean à priori) ayant un champ idZone ?

Discussions similaires

  1. Rendre DropDownChoice éditable
    Par Dragna_x dans le forum Wicket
    Réponses: 0
    Dernier message: 12/09/2011, 15h01
  2. Inserer un DropdownChoice dans un ListView
    Par Reno17 dans le forum Wicket
    Réponses: 3
    Dernier message: 04/11/2010, 14h40
  3. Valeur par défaut d'un DropDownChoice
    Par xanaxilovsky dans le forum Wicket
    Réponses: 11
    Dernier message: 11/08/2010, 12h50
  4. liste DropDownChoice "dynamique"
    Par lerab51 dans le forum Wicket
    Réponses: 11
    Dernier message: 04/05/2010, 10h40
  5. la valeur de ma "DropDownChoice" s'efface!
    Par noussaENSI dans le forum Wicket
    Réponses: 0
    Dernier message: 11/06/2009, 16h25

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