Bonjour
comment acceder et afficher dans une page JSP une liste qui est elle meme contenu dans une liste passé en paramtre de sesison??
Version imprimable
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:
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>
j'ai fait ca :
mais la seconde liste m'affiche touujours la clé de la hashset.Code:
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?
il est dans le scope session
Juste pour clarifier:
allUser est un ArrayList contenant des Roles c'est ca?
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:
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>
meme réponse que précedement, ca ne change rien
${currentItem.id} t'affiche une clé???
Tu peux juste montrer le code qui insère ta List allUsers dans la session stp?
et voila :et comment j'ai modifier ma jsp :Code:
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:
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:
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>
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. :( :bug:
il doit bien yavoir un endroit ou je fais mal quelquechose!!!
Tu es certain d'accéder aux bons objets?
voici mes classes :Citation:
Envoyé par Pollux
ma classe User
et ma classe roleCode:
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:
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; } }