Comment puis-je vérifier la taille d'une collection avec JSTL?
Quelque chose comme:
<c:if test="${companies.size() > 0}">
</c:if>
Comment puis-je vérifier la taille d'une collection avec JSTL?
Quelque chose comme:
<c:if test="${companies.size() > 0}">
</c:if>
Réponses:
<c:if test="${companies.size() > 0}">
</c:if>
Cette syntaxe fonctionne uniquement dans EL 2.2 ou plus récent (Servlet 3.0 / JSP 2.2 ou plus récent). Si vous êtes confronté à une erreur d'analyse XML parce que vous utilisez JSPX ou Facelets au lieu de JSP, utilisez gt
plutôt à la place de >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Si vous êtes réellement confronté à une erreur d'analyse EL, vous utilisez probablement une version EL trop ancienne. Vous aurez alors besoin de la fn:length()
fonction JSTL . De la documentation :
length (java.lang.Object) - Renvoie le nombre d'éléments dans une collection ou le nombre de caractères dans une chaîne.
Mettez ceci en haut de la page JSP pour autoriser l' fn
espace de noms:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Ou si vous utilisez JSPX ou Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Et utilisez comme ceci dans votre page:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Donc, pour tester avec la longueur d'une collection:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Alternativement, pour ce cas spécifique, vous pouvez également simplement utiliser l' empty
opérateur EL :
<c:if test="${not empty companies}">
</c:if>
Comme suggéré par @Joel et @Mark Chorley dans des commentaires précédents:
${empty companies}
Cela vérifie les listes / collections / tableaux nuls et vides. Il ne vous donne pas la longueur mais il satisfait l'exemple du PO. Si vous pouvez vous en tirer, c'est plus propre que d'importer une bibliothèque de balises et sa syntaxe croustillante gt
.
Vous pouvez utiliser comme ça
${fn:length(numList)}
utiliser ${fn:length(companies) > 0}
pour vérifier la taille. Cela renvoie un booléen