Wie kann ich die Größe einer Sammlung mit JSTL überprüfen?
Etwas wie:
<c:if test="${companies.size() > 0}">
</c:if>
Wie kann ich die Größe einer Sammlung mit JSTL überprüfen?
Etwas wie:
<c:if test="${companies.size() > 0}">
</c:if>
Antworten:
<c:if test="${companies.size() > 0}">
</c:if>
Diese Syntax funktioniert nur in EL 2.2 oder neuer (Servlet 3.0 / JSP 2.2 oder neuer). Wenn Sie einen XML-Analysefehler haben, weil Sie JSPX oder Facelets anstelle von JSP verwenden, verwenden Sie gt
anstelle von >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Wenn Sie tatsächlich mit einem EL-Analysefehler konfrontiert sind, verwenden Sie wahrscheinlich eine zu alte EL-Version. fn:length()
Dann benötigen Sie die JSTL- Funktion. Aus der Dokumentation :
Länge (java.lang.Object) - Gibt die Anzahl der Elemente in einer Sammlung oder die Anzahl der Zeichen in einer Zeichenfolge zurück.
Fügen Sie dies oben auf der JSP-Seite ein, um den fn
Namespace zuzulassen :
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Oder wenn Sie JSPX oder Facelets verwenden:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
Und verwenden Sie so auf Ihrer Seite:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
So testen Sie mit der Länge einer Sammlung:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Alternativ können Sie für diesen speziellen Fall auch einfach den EL- empty
Operator verwenden:
<c:if test="${not empty companies}">
</c:if>
Wie von @Joel und @Mark Chorley in früheren Kommentaren vorgeschlagen:
${empty companies}
Dies sucht nach null und leeren Listen / Sammlungen / Arrays. Es gibt Ihnen nicht die Länge, aber es erfüllt das Beispiel im OP. Wenn Sie damit durchkommen können, ist dies nur sauberer als das Importieren einer Tag-Bibliothek und ihrer knusprigen Syntax gt
.
Sie können so verwenden
${fn:length(numList)}
Verwenden Sie ${fn:length(companies) > 0}
, um die Größe zu überprüfen. Dies gibt einen Booleschen Wert zurück