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

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

Что-то вроде:

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

</c:if>

Ответ 1

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

length (java.lang.Object). Возвращает количество элементов в коллекции или количество символов в строке.

поместите это вверху страницы, чтобы разрешить пространство имен 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.

Ответ 2

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

${empty companies}

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

Ответ 3

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

${fn:length(numList)}

Ответ 4

Чтобы ваша инструкция jstl работала, вам придется изменить ее на:

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

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

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

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

Ответ 5

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