Как я могу проверить размер коллекции с помощью JSTL?
Что-то вроде:
<c:if test="${companies.size() > 0}">
</c:if>
Как я могу проверить размер коллекции с помощью JSTL?
Что-то вроде:
<c:if test="${companies.size() > 0}">
</c:if>
Ответы:
<c:if test="${companies.size() > 0}">
</c:if>
Этот синтаксис работает только в EL 2.2 или новее (Servlet 3.0 / JSP 2.2 или новее). Если вы столкнулись с ошибкой разбора XML, потому что вы используете JSPX или Facelets вместо JSP, используйте gt
вместо >
.
<c:if test="${companies.size() gt 0}">
</c:if>
Если вы на самом деле сталкиваетесь с ошибкой синтаксического анализа EL, то вы, вероятно, используете слишком старую версию EL. Вам понадобится fn:length()
функция JSTL тогда. Из документации :
length (java.lang.Object) - возвращает количество элементов в коллекции или количество символов в строке.
Поместите это вверху страницы JSP, чтобы разрешить fn
пространство имен:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Или, если вы используете JSPX или Facelets:
<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
И используйте это на своей странице:
<p>The length of the companies collection is: ${fn:length(companies)}</p>
Итак, чтобы протестировать с длиной коллекции:
<c:if test="${fn:length(companies) gt 0}">
</c:if>
Кроме того, для этого конкретного случая вы также можете просто использовать empty
оператор EL :
<c:if test="${not empty companies}">
</c:if>
Как предложили @Joel и @Mark Chorley в предыдущих комментариях:
${empty companies}
Это проверяет на нулевые и пустые списки / коллекции / массивы. Это не дает вам длину, но удовлетворяет примеру в ОП. Если вам это сойдет с рук, это просто чище, чем импортировать библиотеку тегов и ее резкий синтаксис gt
.
Вы можете использовать как это
${fn:length(numList)}
используйте, ${fn:length(companies) > 0}
чтобы проверить размер. Это возвращает логическое значение