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 :

Accéder aux éléments d'un hashset à travers les balises


Sujet :

JSF Java

  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut Accéder aux éléments d'un hashset à travers les balises
    bonjour,
    dans mon application jee avec hibernate et jsf2
    j'ai une classe (pojo) "Commande" qui contient un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Set<Fichier> fichiers = new HashSet<Fichier>(0);
    alors je l'ai rempli a travers le managedBean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void handleFileUpload(FileUploadEvent event) {
            UploadedFile file = event.getFile();
            Fichier f1 = new Fichier(c1,
                    file.getFileName(), file.getSize(), file.getContents());
            this.c1.getFichiers().add(f1);
     
        }
    pour le parcourir avec du code java :
    j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Iterator it = c.getFichiers().iterator();
                    while(it.hasNext())
                        session.save((Fichier)it.next());
    alors je veux parcourir les elements de ce hashset dans ma page xhtml

    je n'ai jamais travailler avec ce type de collections, j'ai cherché mas j'ai pas su comment acceder a ses elts a travers les balises (#{....})


    avez vous une idée
    merci bien

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    un simple datatable pointant sur le set devrais suffir. Le datatable prend n'importe quel Iterable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:dataTable value="#{tonBean.tonSet}" var="fichier" >
      <h:column>
        <h:outputText value="#{fichier.unePropriete}"/>  
      <h:column>
    </h:dataTable>

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    un simple datatable pointant sur le set devrais suffir. Le datatable prend n'importe quel Iterable
    A vérifier mais il me semble que les éléments nécessitant une liste comme les datatables, ou ui:repeat, etc ..., ont besoin d'une liste ordonnée (qui utilise un index).

    Or ce n'est pas le cas des Set<Object>. Tu auras peut-être donc besoin de modifier ta structure.

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut
    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:dataTable value="#{tonBean.tonSet}" var="fichier" >
      <h:column>
        <h:outputText value="#{fichier.unePropriete}"/>  
      <h:column>
    </h:dataTable>
    mais aucun resultat

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme dit narco, tu va devoir d'abord transfomer ton Set en Liste ou en tableau.

  6. #6
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut malheureusement pas encore
    j'ai essayer en creant cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public List<Fichier> FichiersparId(Integer id){
            List<Fichier> lf = new  ArrayList<Fichier>();
            for(int  i = 0 ;i<this.lc.size();i++ ){
                if(this.lc.get(i).getId() == 1){
                    Iterator it = lc.get(i).getFichiers().iterator();
                    while(it.hasNext()){
                    lf.add((Fichier)it.next());
                    }
                    break;
                }
            }
            return lf;
        }
    mais lorsuq j'appele cette methode en xhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <f:view>
                                        <h:form>
                                            <h:dataTable value="#{histCommController.fichiersparId(commande.id)}" var="fichie">
                                                <h:outputText value="#{fichie.nom}" />
                                            </h:dataTable>
                                        </h:form>
                                    </f:view>
    j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Grave: javax.el.ELException: /vues_utilisateur/historiqueCommandes.xhtml @77,124 value="#{histCommController.fichiersparId(commande.id)}": Method fichiersparId not found

    peut etre il n'accepte pas des methodes avec des parametres
    mais le probleme c'est que je ne peux pas eviter ces hashset car ils sont par defaut generé par hibernate dans les pojos (et je ne peux les modifier sinon erreur)

    avez vous une idée

    merci bien

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    1) le nom de la méthode n'est pas la même entre ton code et ton jsf, ca risque pas de marcher
    2) ta boucle imbriquée peut être vachement simplifiée (et la méthode renommée pour suivre les standard):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public List<Fichier> getFichiersparId(Integer id){
            for (TonType item : lc)
                if (item.getId()== id)
                   return new ArrayList<Fichier>(item.getFichiers());
            return Collections.emptyList()
        }

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    Citation Envoyé par encours Voir le message
    le probleme c'est que je ne peux pas eviter ces hashset car ils sont par defaut generé par hibernate dans les pojos (et je ne peux les modifier sinon erreur)

    avez vous une idée

    merci bien
    J'étais déjà tombé sur ce problème. Après plusieurs recherche, rien de concluant n'avait été trouvé, du coup je n'avais pas le choix. Je ne pouvais pas lier mon IHM directement avec ma structure.

    Donc soit, tu créé une liste spécialement pour l'affichage (que tu remplis donc à partir de ta structure dès que tu as les données)
    Soit tu créé ta propre structure (une autre classe quasi-équivalente) qui contiendra ta classe générée par d'hibernate plus ta Liste.
    A toi d'implémenter les méthodes nécessaires derrière pour qu'elles soient synchrones.

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    1) ce n'est pas recommandé de lier directement des POJOs hibernate à l'interface (même si c'est vachement plus facile donc on le fait tous)
    2) rien ne t'empêche de rajouter des méthodes supplémentaires à tes pojos
    3) rien ne t'empêche de créer un fonction jsf custom faisant la conversion SET -> Array et de l'utiliser dans ton value=

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    je te conseille d'utiliser directement les listes et éviter ce probléme
    Bonne travail !

  11. #11
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut
    merci les amis je vais essayer

Discussions similaires

  1. Accéder aux éléments d'un HashSet
    Par exaltomaniac dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 08/12/2008, 21h16
  2. Réponses: 4
    Dernier message: 16/03/2007, 18h25
  3. Réponses: 3
    Dernier message: 11/04/2006, 11h41
  4. Réponses: 7
    Dernier message: 30/03/2006, 10h04
  5. [WebForms][2.0]Accéder aux élément DropDownlist via Javascript
    Par steelidol dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 21/10/2005, 15h01

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