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
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
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 :
avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #{affaire.premiereAffaireCommune.libelleFr}
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 ???? }
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
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).
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
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; }
Sur quoi tu itères déjà dans le dataTable ? Il faut que ça permette de localiser une et une seule affaire ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part #{affaire.affaire.communes[affaire.champCle].libelleFr}
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #{affaire.communes[0].name}
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager