Como posso verificar o tamanho de uma coleção com JSTL?
Algo como:
<c:if test="${companies.size() > 0}">
</c:if>
Como posso verificar o tamanho de uma coleção com JSTL?
Algo como:
<c:if test="${companies.size() > 0}">
</c:if>
Respostas:
<c:if test="${companies.size() > 0}">
</c:if>
Essa sintaxe funciona apenas no EL 2.2 ou mais recente (Servlet 3.0 / JSP 2.2 ou mais recente). Se você estiver enfrentando um erro de análise de XML porque está usando JSPX ou Facelets em vez de JSP, use em gt
vez de >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Se você está realmente enfrentando um erro de análise de EL, provavelmente está usando uma versão EL muito antiga. Você precisará da fn:length()
função JSTL então. A partir da documentação :
length (java.lang.Object) - Retorna o número de itens em uma coleção ou o número de caracteres em uma sequência.
Coloque isso na parte superior da página JSP para permitir o fn
espaço para nome:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Ou se você estiver usando JSPX ou Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
E use assim em sua página:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Então, para testar com o comprimento de uma coleção:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Como alternativa, para este caso específico, você também pode simplesmente usar o empty
operador EL :
<c:if test="${not empty companies}">
</c:if>
Conforme sugerido por @Joel e @Mark Chorley nos comentários anteriores:
${empty companies}
Isso verifica se há listas / coleções / matrizes nulas e vazias. Ele não fornece o comprimento necessário, mas satisfaz o exemplo no OP. Se você conseguir se safar, é mais limpo do que importar uma biblioteca de tags e sua sintaxe difícil gt
.
Você pode usar assim
${fn:length(numList)}
use ${fn:length(companies) > 0}
para verificar o tamanho. Isso retorna um valor booleano