Проверьте размер коллекции с помощью JSTL


Как я могу проверить размер коллекции с помощью JSTL?

что-то типа:

<c:if test="${companies.size() > 0}">

</c:if>
5 221

5 ответов:

от:http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/fn/tld-summary.html

длина (java.ленг.Объект) - возвращает количество элементов в коллекции, или количество символов в строке.

поместите это в верхней части страницы, чтобы разрешить пространство имен fn:

 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

и используйте вот так на своей странице jsp:

<p>The length of the companies collection is : ${fn:length(companies)}</p>

чтобы проверить с длиной коллекция:

<c:if test="${fn:length(companies) gt 0}">
   <p>It is greater than 0</p>
</c:if>

обратите внимание на использование gt вместо > как > не допускается внутри тегов jsp/jsf.

как было предложено @Joel и @Mark Chorley в предыдущих комментариях:

${empty companies}

это проверяет наличие пустых и пустых списков / коллекций / массивов. Это не вам длины, но он удовлетворяет пример в ОП. Если вы можете уйти с ним это просто чище, чем импорт библиотеки тег и его резкий синтаксис как gt.

вы можете использовать такой

${fn:length(numList)}

для того, чтобы ваш оператор jstl работал, вам нужно будет изменить его на:

<c:if test="${companies.size > 0}"></c:if>

для этого вам нужно добавить метод в класс companies с именем getSize, который возвращает размер как int. а затем просто используйте тот же оператор jstl, который вы использовали раньше.

вот пример getSize метод, который вы должны добавить в свой класс с:

public int getSize(){
    return companies.size();
}

использовать ${fn:length(companies) > 0} чтобы проверить размер. Это возвращает логическое значение