Перевірте розмір колекції за допомогою JSTL


Відповіді:


430
<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>

47
Я просто хотів зазначити, що якщо необхідність отримати розмір полягає у визначенні того, чи колекція не порожня, то оператор "порожній" є корисним, оскільки він також перевіряє нуль.
Джоель

Я згоден з Марком тут. Навіщо імпортувати більше ваших продуктів на одну сторінку за один тег? Використовуйте розчин Марка, він чистіший.
ResourceReaper

Домовились - порожньо чистіше. @Joel має викласти повну відповідь, щоб його можна було проголосувати та прийняти. Багато хто з нас (я) - це програмісти, які не є jsp, копіюють / склеюють фрагменти з Google та SO без особливих роздумів, крім першого коду, який ми бачимо.
Джош

9
ОП запитала про перевірку розміру, не обов’язково про перевірку, чи він порожній, моя відповідь також дозволяє розглядати складніші сценарії з наявною повною бібліотекою тегів.
Martlark

компанії повинні бути вар, а не парам, інакше ви повинні визначити це, наприклад, для ATG - <dsp: getvalueof var = "companies" param = "arrayParam" />
Андрій Бойко

30

Як запропонували @Joel та @Mark Chorley у попередніх коментарях:

${empty companies}

Це перевіряє наявність порожніх списків / колекцій / масивів. Він не отримує вам довжину, але він задовольняє прикладу в ОП. Якщо ви можете піти з нею, це просто чистіше, ніж імпорт бібліотеки тегів та подібного синього синтаксису gt.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.