Vérifier la taille d'une collection avec JSTL
Comment puis-je vérifier la taille d'une collection avec JSTL?
quelque chose comme:
<c:if test="${companies.size() > 0}">
</c:if>
5 réponses
de: http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/fn/tld-summary.html
longueur (java.lang.Objet) - renvoie le nombre d'éléments d'une collection, ou le nombre de caractères d'une chaîne.
mettez ceci en haut de la page pour autoriser l'espace de noms fn:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
et utiliser comme ceci dans votre page jsp:
<p>The length of the companies collection is : ${fn:length(companies)}</p>
ainsi tester avec la longueur de la collection:
<c:if test="${fn:length(companies) gt 0}">
<p>It is greater than 0</p>
</c:if>
L'utilisation de gt
au lieu de >
comme >
n'est pas autorisée à l'intérieur des étiquettes jsp/jsf.
comme suggéré par @Joel et @Mark Chorley dans les commentaires précédents:
${empty companies}
cette commande vérifie les listes nulles et vides/collections/tableaux. Il ne vous donne pas la longueur mais il satisfait l'exemple dans L'OP. Si vous pouvez vous en tirer, c'est juste plus propre que d'importer une bibliothèque d'étiquettes et sa syntaxe croustillante comme gt
.
pour que votre déclaration jstl fonctionne, vous devez la changer en:
<c:if test="${companies.size > 0}"></c:if>
pour cela vous devez ajouter une méthode à la classe des entreprises appelée getSize qui renvoie la taille comme int. et puis utilisez juste la même déclaration jstl que vous avez utilisé avant.
voici un exemple pour la méthode getSize
que vous devriez ajouter à votre classe de compagnies:
public int getSize(){
return companies.size();
}
utilisez ${fn:length(companies) > 0}
pour vérifier la taille. Ceci renvoie un booléen