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

Struts 1 Java Discussion :

Problème balise iterate avec la classe HashSet


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut Problème balise iterate avec la classe HashSet
    Dans ma ActionForm j'ai une propriété de type HashSet que j'initialise avec les données d'une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setLieux(new HashSet(new HibernateDAO().list(new Lieu())));
    la méthode HibernateDAO().list renvoit un objet de type list().
    le de la jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <nested:iterate id="Lieux" name="FillForm" property="lieux">
    <html:checkbox property="identifiants" value="Lieux.lieuid"/>
    <nested:write name="Lieux" property="nom"/>
    </nested:iterate>
    la page n'affiche que le premier element de la liste, par contre si l'élément lieux est déclaré en ArrayList() et que le code suivant est exécuté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     setLieux((ArrayList) new HibernateDAO().list(new Lieu()));
    la jsp affiche tous les éléments de la table. quelqu'un a une explication?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Points : 310
    Points
    310
    Par défaut
    Bonjour,

    Sans certitude aucune, je pense que c'est parce que List a une méthode get(int index) contrairement à HashSet.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    Est ce que la balise <nested:iterate> n'utilise pas simplement la méthode iterate, que de ces deux classe possèdent pour afficher les éléments de la classe?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230
    Points : 310
    Points
    310
    Par défaut
    Voici ce que j'ai trouvé ici :
    http://struts.apache.org/1.x/struts-...ruts-logic.tld

    Ca concerne le tag <logic:iterate/> mais je pense que c'est pareil pour <nested:iterate/>

    Repeats the nested body content of this tag once for every element of the specified collection, which must be an Iterator, a Collection, a Map (whose values are to be iterated over), or an array.

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    Mais la classe HashSet implémente les interfaces Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E> donc doit être utiliser sans problème avec la balise <...:iterate>

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Citation Envoyé par Benouze Voir le message
    Bonjour,

    Sans certitude aucune, je pense que c'est parce que List a une méthode get(int index) contrairement à HashSet.
    Tout à fait d'accord.

    Les tags nested ont besoin de getters indexés.

    Comme apparemment tu as simplement besoin d'afficher les propriétés et non pas les modifier, si tu veux continuer à travailler avec une HashSet, je te conseille d'utiliser plutôt un logic:iterate et un bean:write :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <logic:iterate id="Lieux" name="FillForm" property="lieux">
      <html:checkbox property="identifiants" value="Lieux.lieuid"/>
      <bean:write name="Lieux" property="nom"/>
    </logic:iterate>

  7. #7
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    Le résultat est le même, la jsp n'affiche que la première ligne de ma table. toutes les valeurs de la propriété lieux ne sont pas itérées.

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Ben là, désolée mais je ne comprends pas ce qui se passe.

    Mais pourquoi veux-tu absolument utiliser la HashSet alors que ça fonctionne très bien avec une ArrayList ?

  9. #9
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    227
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 227
    Points : 109
    Points
    109
    Par défaut
    Simplement parceque au niveau de ma Javabean j'ai les mêmes propriétés qui sont toutes de type HashSet(), cette collection est recommandée par hibernate pour mapper les associations puisque j'ai la possibilité de créer une HashSet() à partir de n'importe quelle collection c'est que j'ai fait mais visiblement cela ne marche pas, donc je vais réecrire mais mes getter et setter
    merci

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

Discussions similaires

  1. Problème de multimap avec des classes dérivées
    Par Bob94 dans le forum SL & STL
    Réponses: 3
    Dernier message: 06/05/2008, 02h02
  2. Problème d'héritage avec une classe abstraite
    Par Ph.denis dans le forum C++
    Réponses: 7
    Dernier message: 22/03/2008, 10h37
  3. Réponses: 8
    Dernier message: 16/10/2006, 12h28
  4. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30
  5. [struts][iterate] problème logic:iterate avec un Vector
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 9
    Dernier message: 31/03/2004, 18h05

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