Une chose que je n'ai jamais aimée dans JSTL (en fait je pense que c'est la seule chose :)) est le fait qu'il n'y a aucun moyen de récupérer la taille d'une liste/collection.
EDITAR: ok, donc c'était possible mais je ne le savais pas :( voir ici .
Les forEach
possède la balise varStatus
que vous pouvez utiliser pour déterminer l'index de la ligne ( index
/ count
sur le site de l varStatus
) mais il faut tester si l'on est à la dernière position de la liste, ce qui implique d'avoir la taille de la liste au préalable :
<c:forEach items="${fileList}" var="current" varStatus="status">
...
<c:if test="${not (status.count eq listSize)}">,</c:if>
</c:forEach>
Mais vous devrez placer le listSize
dans le champ d'application, manuellement, avant de faire ce genre de choses.
Dans l'un de mes projets, j'ai créé une balise qui prend une collection et renvoie la valeur :
<myLib:collectionSize collection="${fileList}" var="listSize" />
<c:forEach items="${fileList}" var="current" varStatus="status">
...
<c:if test="${not (status.count eq listSize)}">,</c:if>
</c:forEach>
Vous pouvez faire de même si vous avez souvent ce type de code (sinon vous pouvez simplement l'ajouter dans le champ d'application avec ce qui vous convient).