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 :

usage de ui:repeat: PropertyNotFoundException


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Par défaut
    Bonjour,

    J'utilise ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <ui:repeat value="#{user.groups}" var="item" >
    <h:outputText value="#{item.name}" />
    			                </ui:repeat>
    Il me donne une exception de type propertyNotFoundException sur l'attribue name alors que je suis sûre qu'il existe!

    Avec une écriture comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <ui:repeat value="#{user.groups}" var="item" >
    			                	<h:outputText value="#{item}" />
    			                </ui:repeat>
    Il me sort l'item avec l'id voulu.

    PS: une boucle de type foreach donne le même resultat

    j'ai oublié de dire que que l'attribut groups de user dans mon exemple est de type HashSet

    Merci pour votre aide

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut,
    Tu confirmes que tu as bien ça dans ta classe User :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class User {
      public String getName(){
       :
      }
     
      public void setName(String name){
       :
      }
    }
    La casse est super importante, donc, getname pas sûr que ça marche.

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    c'est normal,
    c:forEach ou ui:repeat, prend une liste ordonné, un HashSet n'est pas ordonné,
    la solution est de convertir le Set en collection ordonnée ArrayList ou autre.

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Par défaut
    Merci pour vos réponses

    Je ne pense pas que ça soit un problème de getter/setter j'ai tout vérifié de ce coté là.

    Par contre, pour l'affaire de la collection ordonnée, ya t-il un autre moyen de faire la boucle en gardant le Set?

  5. #5
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    toarray

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Par défaut
    Il fallait convertir le Set en List:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public List<Group> getGroups2(){
      List<Group> res = new ArrayList();
      res.addAll(groups);
      return res;
    }
    et referencer groups2 à la place de groups:

    #{user.groups2} à la place de #{user.groups}

    pas de collections non ordonnées avec un foreach ou un repeat il parait!

    Merci au petit doigt de djo.mos

  7. #7
    Expert confirmé
    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
    Par défaut
    Pour détailler encore un peu (on avait continué de creuser ça sur le chat), il se trouvait que le stackTrace complet montrait que JSF prenait l'item (la variable d'itération) pour un Set (une implémentation d'Hibernate plus précisément) au lieu de Group, et donc item.name ça lance une exception PropertyNotFoundException (Set n'a pas d'attribut name).

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

Discussions similaires

  1. [POI] Usage à partir d'une Servlet
    Par fredmorvant29 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 19/07/2004, 15h35
  2. [C#] Déclencher action dans Repeater avec LinkButton
    Par globeriding dans le forum ASP.NET
    Réponses: 13
    Dernier message: 13/05/2004, 15h29

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