Bonjour,
Je mets en session un objet qui contient plusieurs attributs dont une collection.
Je veux ensuite lire chaque item de la collection mais je ne vois pas comment faire.
[/code]
Bonjour,
Je mets en session un objet qui contient plusieurs attributs dont une collection.
Je veux ensuite lire chaque item de la collection mais je ne vois pas comment faire.
[/code]
SI tu utilise Struts un <logic:iterate> devrait faire l'affaire , sinon utilise la JSTL (en fait moi perso je prefere la JSTL a ce que propose Struts , rien ne t'empeche d'utiliser la JSTL avec Struts)
http://adiguba.developpez.com/tutoriels/j2ee/jsp/jstl/
J'ai essayé de faire un <logic:iterate> mais lorsque je le fais sur mon objet en session, il me dit qu'il ne peut pas faire d'iterations sur l'objet (normal car il est unique).
Lorsque j'essaie de faire un <logic:iterate> sur l'attribut collection de mon objet, il me dit qu'il ne connait pas le bean nomObjet.nomCollection (normal car seul nomObjet est en session).
Arrives tu a faire un simple bean:write sur un champs simple de ton Bean?
ton bean est il le ActionForm definit dans ton struts config ?
Salut,
Il faut que ton objet en session possede les méthodes accesseurs pour ses attributs (par exemple pour nomObjet.nomCollection tu dois avoir une méthode getNomCollection()).
Avec la JSTL (1.0 avec JSP 1.2, ou 1.1 avec les JSP 2.0) et les EL avec <c:forEach/> :
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <c:forEach var="item" items="${sessionScope['nomObjet'].nomCollection}"> <c:out value="${item.property}"/><br/> </c:forEach>
- nomObjet, le nom de ton objet dans le scope session.
- nomCollection, le nom de l'attribut qui contient la collection (via la méthode getNomCollection()).
- property, un attribut d'un item de la collection (via la méthode getProperty()).
Nota : avec les JSP 2.0 on peut utiliser directement ${item.property} sans le <c:out/>...
Avec Struts et <logic:iterate/> :
[code] <logic:iterate id="item" name="nomObjet.nomCollection">
<bean:write name="item" property="property"/><br/>
</logic:iterate>
Enfin pour rappel la JSTL sera intégré dans les spécifications de JEE 5.0
a++
J'ai mis en session l'objet User (usr) qui contient une collection d'appliAccess.
L'objet AppliAccess hérite d'un objet AccessCode ayant comme attribut (login et password) et contient également un objet Application (url, desc, code).
Enuiste, je veux afficher le code le l'application et mettre en lien l'url de l'application avec le login et password.
Ci-dessous le code (qui ne fonctionne pas !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <logic:iterate id="appliUser" name="usr.appliAccess"> <tr> <td> <a href="<bean:write name="appliUser" property="application.url" />?login=<bean:write name="appliUser" property="accessCode.login" />&password=<bean:write name="appliUser" property="accessCode.password" />"><bean:write name="appliUser" property="application.code" /></a> </td> </tr> </logic:iterate>
si je comprend bien usr et une liste ou une collection d'objet donc fait cela
je part du principe que l'objet application est celui contenu dans la collection.<logic:iterate id="appliUser" name="usr" type="cheminComplet.Application">
<tr>
<td>
<a href="<bean:write name="appliUser" property="application.url" />?login=<bean:write name="appliUser" property="accessCode.login" />&password=<bean:write name="appliUser" property="accessCode.password" />"><bean:write name="appliUser" property="application.code" /></a>
</td>
</tr>
</logic:iterate>
en fait struts va itérer sur ta liste pour récuperer un objet de type Application, mais tu n'as pas besoin de lui donner le nom du getter
Je suis passé par une étape intermédiaire qui consiste à mettre en session la liste des applications.
Ensuite, je fais juste un <logic:iterate> sur cette liste![]()
C'est quand même pas très propre...![]()
Tu accède à ton bean monBean, si tu veut accéder une propriété de monBean, maPropriete, qui est un Object de type bean tu peut utiliser la fonction :
Si tu as un bean monBean qui a des Bean en données membres, qui ont eux même des Bean puis des variables normales, tu peut utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <logic:iterate id="id_acces" indexId="idx" name="monBean" property="maPropriete" scope="request"> <bean:write name="id_acces" property="la_chose_a_ecrire"/> </logic:iterate>
Code : Sélectionner tout - Visualiser dans une fenêtre à part <nested:write name="monBean" property="ssbean1.ssbean2.chaine">
Partager