Bonjour
comment acceder et afficher dans une page JSP une liste qui est elle meme contenu dans une liste passé en paramtre de sesison??
Tu peux imbriquer des <c:forEach> comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <c:forEach var="list" items=${session.taVariable}> <c:forEach var="currentItem" items=${list}> // accès à ton objet courant par ${currentItem} </c:forEach> </c:forEach>
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
j'ai fait ca :
mais la seconde liste m'affiche touujours la clé de la hashset.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <display:table cellpadding="0" cellspacing="0" name="${allUser}" decorator="be.qspin.qats.utilities.Decorator" defaultsort="1" pagesize="20" sort="list"> <display:column property="login" title="login" sortable="true"/> <display:column property="password" title="password" sortable="true"/> <display:column property="roles" title="Roles" sortable="true"> <%--logic:iterate collection="${allUser.roles}" id="roles" name="roles"> </logic:iterate--%> <c:forEach items="${allUser}" var="roles"> ${roles.id} - ${roles.role} </c:forEach> </display:column> <display:column property="userSelected" title="Action"/> </display:table>
et si je met items="${allUser.roles}" il me met une erreur me disant que le . n'est pas correct
jete un coup d'oeil ici
ton allUser est dans quelle scope?
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
Juste pour clarifier:
allUser est un ArrayList contenant des Roles c'est ca?
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
en allUser est bien une arryList qui contient des classes de type User. La classe User a parmi ses attribut un attribut roles qui est une interface "Set" implemantant la classe "HashSet"
c'est pour ca que lors de l'affichage, ca m'affiche les clé contenu dans roles et non pas les données réel qui sont associer a ces clé.
mais je ne sais pas comment faire pour acceder puis afficher ces données réel (en JSP j'entend bien)
T'as essayé comme ca?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <c:forEach var="list" items=${sessionScope.allUser}> <c:forEach var="currentItem" items=${list["Roles"]}> // accès à ton objet courant par ${currentItem} </c:forEach> </c:forEach>
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
${currentItem.id} t'affiche une clé???
Tu peux juste montrer le code qui insère ta List allUsers dans la session stp?
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
et voila :et comment j'ai modifier ma jsp :
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
18
19
20
21
22
23 String login = ((LogonForm) form).getLogin(); String password = ((LogonForm) form).getPassword(); if (isCancelled(request)){ return mapping.findForward(CANCEL); } User user = Users.AuthenticateUser(login, password); if (user != null){ HttpSession session = request.getSession(); session.setAttribute("user", user); session.setAttribute("allUser", Users.getUsers()); session.setAttribute("allRole", Roles.getRoles()); return mapping.findForward(SUCCESS); } else{ ActionErrors errors = new ActionErrors(); errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("error.logon.connect")); saveMessages(request,errors); return (new ActionForward(mapping.getInput())); }
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 <display:table cellpadding="0" cellspacing="0" name="${allUser}" decorator="be.qspin.qats.utilities.Decorator" defaultsort="1" pagesize="20" sort="list"> <display:column property="login" title="login" sortable="true"/> <display:column property="password" title="password" sortable="true"/> <display:column property="roles" title="Roles" sortable="true"> <%--logic:iterate collection="${allUser.roles}" id="roles" name="roles"> </logic:iterate--%> <c:forEach var="list" items=${sessionScope.allUser}> <c:forEach var="currentItem" items=${list["Roles"]}> ${currentItem}; // accès à ton objet courant par ${currentItem} </c:forEach> </c:forEach> </display:column> <display:column property="userSelected" title="Action"/> </display:table>
Mais là il me semble que ca ne correspond pas directement à ta description?
Tu as un allUser et un allRole dans ta session c'est normal?
Perso j'ai testé chez moi et pas de problème. Un ArrayList de User et chaque User contient un HashSet de Role, j'ai mis l'ArrayList en session et pour lister j'ai donc écrit ce code
Et tout fonctionne...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <c:forEach items="${sessionScope.allUsers}" var="users"> <c:forEach items="${users.roles}" var="role"> ${role.id} - ${role.name} <br/> </c:forEach> </c:forEach>
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
salut,
la list allrole correspond a tous les roles displonible et je l'utilise plus bas dans la page.
alors que celle contenu dans allUser donne uniquement les roles associés a l'utilisateur.
Je ne sais vraiment pas quoi faire, j'ai copie/coller ton code et j'ai toujours le meme probleme.
il doit bien yavoir un endroit ou je fais mal quelquechose!!!
Tu es certain d'accéder aux bons objets?
Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum
voici mes classes :Envoyé par Pollux
ma classe User
et ma classe role
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 package be.qspin.qats.entities; // Generated 11-juin-2007 10:19:11 by Hibernate Tools 3.2.0.beta7 import java.util.HashSet; import java.util.Set; /** * Define an "User" entity. * @author Florian Guillemotte * */ public class User implements java.io.Serializable { // Fields private Integer id; private String login; private String password; private Set roles = new HashSet(0); // Constructors /** default constructor */ public User() { } /** minimal constructor */ public User(String login) { this.login = login; } /** full constructor */ public User(String login, String password, Set roles) { this.login = login; this.password = password; this.roles = roles; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getLogin() { return this.login; } public void setLogin(String login) { this.login = login; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public Set getRoles() { return this.roles; } public void setRoles(Set roles) { this.roles = roles; } }
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 package be.qspin.qats.entities; // Generated 11-juin-2007 10:19:11 by Hibernate Tools 3.2.0.beta7 /** * Define an "Role" entity. * @author Florian Guillemotte * */ public class Role implements java.io.Serializable { // Fields private Integer id; private String role; // Constructors /** default constructor */ public Role() { } /** full constructor */ public Role(String role) { this.role = role; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getRole() { return this.role; } public void setRole(String role) { this.role = role; } }
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