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 :

Générer une <h:dataTable> avec un nombre de <h:column> variable


Sujet :

JSF Java

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut Générer une <h:dataTable> avec un nombre de <h:column> variable
    Bonjour, je souhaite remplir une dataTable JSF à partir d'une liste de données. La particularité de cette liste c'est qu'elle ne contient pas des objets simples mais des objets qui contiennent eux-mêmes une liste.

    Explication :

    Cas classique : on itère sur une liste simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <h:dataTable value="#{maListe}" var="monObjet">
         <h:column>
              <h:outPutText value="#{monObjet.attribut1}" />
         </h:column>
         <h:column>
              <h:outPutText value="#{monObjet.attribut2}" />
         </h:column>
    </h:dataTable>


    Dans mon cas, j'aimerais itérer ma sousListe pour pouvoir générer un nombre variable de <h:dataColumn>.

    J'ai essayé d'utiliser JSTL 1.2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <h:dataTable value="#{maListe}" var="monObjet">
         <c:forEach items="#{monObjet.maSousListe}" var="monSousObjet"> // monSOusObjet est en fait une chaine de caractère
              <h:column>
                   <h:outputText value="#{monSousObjet}" />
              </h:column>
         </c:forEach>
    </h:dataTable>
    Malheureusement, le moteur JSF me retourne l'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
    Quelqu'un saurait-il faire face à ce problème ?

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Hello,

    Que retourne ton #{monObjet.maSousListe} au juste ?

  3. #3
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par romaintaz Voir le message
    Hello,

    Que retourne ton #{monObjet.maSousListe} au juste ?
    maSousListe est un attribut de la classe monObjet, c'est une ArrayList qui contient des objets de type String.

    Edit :
    Nom : liste.JPG
Affichages : 116
Taille : 16,7 Ko

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Je n'utilise que très peu les tags JSTL.
    Une petite recherche sur le net semble indiquer que le <c:forEach/> a parfois des soucis pour itérer sur certaines listes... Pourtant il semblerait qu'il gère correctement les ArrayLists...

    Tu peux toujours essayer d'utiliser le <c:forTokens/> qui prendra une String et un délimiteur : Au lieu de retourner ton ArrayList, tu concaténes tous les String de cette liste, en les séparant par un délimiteur particulier, et ensuite d'utiliser le <c:forTokens/> dans ta page JSF...

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/03/2015, 09h31
  2. Réponses: 9
    Dernier message: 21/06/2011, 20h30
  3. Réponses: 7
    Dernier message: 29/10/2007, 15h03
  4. Réponses: 2
    Dernier message: 04/07/2007, 00h48
  5. Générer une dll 16 bits avec delphi 7
    Par chtiot dans le forum EDI
    Réponses: 4
    Dernier message: 21/02/2006, 19h50

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