Jak mogę sprawdzić rozmiar kolekcji za pomocą JSTL?
Coś jak:
<c:if test="${companies.size() > 0}">
</c:if>
Jak mogę sprawdzić rozmiar kolekcji za pomocą JSTL?
Coś jak:
<c:if test="${companies.size() > 0}">
</c:if>
Odpowiedzi:
<c:if test="${companies.size() > 0}">
</c:if>
Ta składnia działa tylko w wersji EL 2.2 lub nowszej (Servlet 3.0 / JSP 2.2 lub nowszej). Jeśli występuje błąd analizy składni XML, ponieważ zamiast JSP używasz JSPX lub Facelets, użyj gt
zamiast >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Jeśli rzeczywiście napotykasz błąd analizy EL, prawdopodobnie używasz zbyt starej wersji EL. Będziesz wtedy potrzebował fn:length()
funkcji JSTL . Z dokumentacji :
length (java.lang.Object) - Zwraca liczbę elementów w kolekcji lub liczbę znaków w ciągu.
Umieść to u góry strony JSP, aby umożliwić fn
przestrzeń nazw:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Lub jeśli używasz JSPX lub Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
I użyj tego na swojej stronie:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Aby przetestować na podstawie długości kolekcji:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Alternatywnie, w tym konkretnym przypadku możesz również po prostu użyć empty
operatora EL :
<c:if test="${not empty companies}">
</c:if>
Jak sugerowali @Joel i @Mark Chorley we wcześniejszych komentarzach:
${empty companies}
To sprawdza puste i puste listy / kolekcje / tablice. Nie zapewnia ci długości, ale spełnia przykład z PO. Jeśli możesz sobie z tym poradzić, jest to po prostu czystsze niż importowanie biblioteki znaczników i jej skorumpowanej składni gt
.
Możesz użyć w ten sposób
${fn:length(numList)}
użyj, ${fn:length(companies) > 0}
aby sprawdzić rozmiar. Zwraca wartość logiczną