¿Cómo puedo verificar el tamaño de una colección con JSTL?
Algo como:
<c:if test="${companies.size() > 0}">
</c:if>
¿Cómo puedo verificar el tamaño de una colección con JSTL?
Algo como:
<c:if test="${companies.size() > 0}">
</c:if>
Respuestas:
<c:if test="${companies.size() > 0}">
</c:if>
Esta sintaxis solo funciona en EL 2.2 o posterior (Servlet 3.0 / JSP 2.2 o posterior). Si enfrenta un error de análisis XML porque está utilizando JSPX o Facelets en lugar de JSP, entonces use en gt
lugar de >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Si realmente enfrenta un error de análisis EL, entonces probablemente esté usando una versión EL demasiado antigua. Necesitará la fn:length()
función JSTL entonces. De la documentación :
length (java.lang.Object) : devuelve el número de elementos en una colección o el número de caracteres en una cadena.
Ponga esto en la parte superior de la página JSP para permitir el fn
espacio de nombres:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
O si está utilizando JSPX o Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Y use así en su página:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Entonces, para probar con la longitud de una colección:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Alternativamente, para este caso específico, también puede simplemente usar el empty
operador EL :
<c:if test="${not empty companies}">
</c:if>
Como lo sugirieron @Joel y @Mark Chorley en comentarios anteriores:
${empty companies}
Esto busca listas / colecciones / matrices nulas y vacías. No te da la longitud, pero satisface el ejemplo en el OP. Si puede salirse con la suya, esto es más limpio que importar una biblioteca de etiquetas y su sintaxis crujiente gt
.
Puedes usar así
${fn:length(numList)}
use ${fn:length(companies) > 0}
para verificar el tamaño. Esto devuelve un valor booleano.