Як я можу перевірити розмір колекції за допомогою 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}
для перевірки розміру. Це повертає булевий характер