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 a une collection par index


Sujet :

JSF Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut accéder a une collection par index
    hello

    j'aimerais accéder au premier élément d une collection de cette manière

    #{affaire.affaire.communes[0].libelleFr} malheureusement ca ne semble pas possible

    quelqu'un aurait une idée ? d avance merci

  2. #2
    Expert éminent
    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
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    Suffit d'ajouter un getter dans le managed bean qui retourne le premier élément de la collection, et de référencer celui-ci dans l'EL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #{affaire.premiereAffaireCommune.libelleFr}
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Affaire getPremiereAffaireCommune(){
      return affaire.communes.get(0);  //Et si la liste est vide ????
    }

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    encore une fois merci

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    j avais pas eu le temps de tester mais ca ne peut pas marcher

    je dois afficher le résultat de ${sessionBean.affaire.communes.libelleFr} pour chacun des éléments de ma table

    en récupérer depuis le sessionBean cela ne prendrait que de ma premiere valeur et afficherait la même donnée pour tous les éléments de ma table

    ce qui n est pas le résultat souhaité

    si vous avez d autre piste je suis preneur

    d avance merci

  5. #5
    Expert éminent
    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
    Points : 7 679
    Points
    7 679
    Par défaut
    Salut,
    Comme l'EL ne permet pas d'appeler des méthodes avec des paramètres, tu peux émuler ça via les maps ... (en attendant JSF 2) ou en utilisant une autre implémentation non officielle (ELFunctor, JBoss EL, etc.)

    Pour les maps, disons que tu as dans ton managed bean une collection "colelction", tu lui assosice un map (dictionnaire) en choisissant l'un des attributs des objets de la collection comme clé. Je sais pas dans ton cas, une AffaireCommune doit bien avoir un champ qui peut être utilisé comme clé

    Il faut aussi faire très attention à toujours synchronizer le Map une fois tu touches à la collection (comme dans la méthode test).

    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
    16
    17
    private Collection<OneBean> collection;
     
    private Map<Long, OneBean> index;
     
    public void test() {
    	collection = new ArrayList<OneBean>();
    	collection.add(new OneBean());
    	index = new HashMap<Long, OneBean>();
    	for (OneBean ob : collection) {
    		index.put(ob.getId(), ob);
    	}
     
    }
     
    public Map<Long, OneBean> getIndex() {
    	return index;
    }
    Et dans l'EL, disons que tu es dans une dataTable avec une variable var="affaire" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #{affaire.affaire.communes[affaire.champCle].libelleFr}
    Sur quoi tu itères déjà dans le dataTable ? Il faut que ça permette de localiser une et une seule affaire ...

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    hello ta solution a l air intéresante, le problème est que devais pour obtenir une clef revoir le mapping complet qui est fait de AffaireCommune en définissant une entité hibernate qui corresponderait à une primary key composed ....car il n existe pas d entité AffaireCommune mais uniquement un Set de Commune dans l entité affaire

    enfin je pense que ca devrait être ca ...

    et comme tu le proposes accéder à la collection de la manière suivante

    #{affaire.affaire.communes[affaire.champCle].libelleFr}

    n utiliserait pas la map précédemant creér dans le managed bean et il n y aurait aucun index

    je vais probablement regardé du coté des outils comme ELFunctor, JBoss EL voir ce qu ils proposent

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #{affaire.communes[0].name}
    ne devrait poser aucun problème pourvu que communes soit une List (ou éventuellement peut etre un array, mais là je suis plus sûr) Bref, on peut très bien accéder par index en jsf, encore heureux.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    c est un Set, mais je pense que de transformer la Collection Set en list ou array list ne devrait pas me poser de problème

    merci de cette précision

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

Discussions similaires

  1. Remplacer un element d'une collection par un autre element
    Par pascalwick dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 02/06/2010, 09h54
  2. Calcul de l'espace occupé par une Collection
    Par had35 dans le forum Général Java
    Réponses: 17
    Dernier message: 13/09/2006, 11h52
  3. Accéder à une propriété par son nom
    Par Neilos dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/09/2005, 21h34
  4. [DLL] Acces a une methode par son index de maniere dynamique
    Par Clorish dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 11/03/2005, 17h14
  5. [VB6]Valeurs une collection renvoyée par la fonction d'une classe
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 30/03/2004, 11h04

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