Comment trier une collection avant de l'afficher ?
Bonjour,
J'affiche une collection dans une page JSP, de la manière suivante (merci à c_nvy ;)) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<c:forEach items="${user.functions}" var="item" varStatus="status">
<c:choose>
<c:when test="${status.last}">
<c:set var="sep" value=""/>
</c:when>
<c:otherwise>
<c:set var="sep" value=", "/>
</c:otherwise>
</c:choose>
<c:out value="${item.name}"/><c:out value="${sep}"/>
</c:forEach> |
Contexte :
J'ai une collection de User. Un User possède divers attributs (nom, prénom, etc.) et aussi des fonctions. Je tente ici de lister mes User dans un tableau.
Exemple :
Code:
1 2 3 4 5 6 7
|
+-----------+----------+-----------------+
| Firstname | Lastname | Functions |
+-----------+----------+-----------------+
| Julien | DURAND | engineer, admin |
+-----------+----------+-----------------+
| | | | |
Le problème, c'est que je me suis rendu compte que les Functions n'étaient pas retournées toujours dans le même ordre par hibernate.
Quelle est la logique du site (workflow) ?
1) Le navigateur demande l'URL listUsers.do
2) Struts envoie vers une Action que j'ai codée. Grâce à Hibernate, tout ce que j'ai à faire (en gros), c'est :
Code:
1 2 3 4 5 6
|
List<User> maListe = getAllUsers();
request.setAttribute("listUsers", maListe);
return mapping.findForward("success"); |
Le bean listUsers est envoyé à la page JSP (Vue).
3) La page listUsers.jsp itère sur la collection de Users, mais quand elle arrive sur le listing des Function d'un User, ces Function ne sont pas encore récupérées de la base de données. Cela déclenche un requêtage "implicite" par Hibernate pour récupérer ces Function.
Je n'ai donc pas de contrôle sur la requête pour faire un tri.
Ma question :
Comment faire pour trier ces valeurs ? Est-ce que Struts permet cela ? Comment est-ce que vous feriez ?
piloupy