Sprawdź rozmiar kolekcji za pomocą JSTL

Jak mogę sprawdzić rozmiar kolekcji za pomocą JSTL?

Coś w stylu:

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

</c:if>
 221
Author: skaffman, 2009-05-12

5 answers

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

Długość (jap.lang.Obiekt) - zwraca ilość elementów w kolekcji lub ilość znaków w łańcuchu.

Umieść to na górze strony, aby zezwolić na Przestrzeń nazw fn:

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

I użyj tak na swojej stronie jsp:

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

Więc do sprawdzenia z długością zbioru:

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

Zwróć uwagę na użycie gt zamiast > jako > nie jest dozwolone wewnątrz znaczników jsp/jsf.

 403
Author: Martlark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-28 06:56:43

Jak zasugerowali @Joel i @ Mark Chorley we wcześniejszych komentarzach:

${empty companies}

Sprawdza, czy nie ma pustych list/kolekcji / tablic. Nie daje Ci długości, ale spełnia przykład w OP. jeśli możesz się z tym wywinąć, jest to po prostu czystsze niż importowanie biblioteki znaczników i jej chrupiącej składni, takiej jak gt.

 27
Author: Josh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-12 10:38:16

Możesz użyć w ten sposób

${fn:length(numList)}
 10
Author: Brad Larson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-15 02:43:42

Aby twoje oświadczenie jstl zadziałało, musisz zmienić je na:

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

W tym celu musisz dodać metodę do klasy companies o nazwie getSize, która zwraca rozmiar jako int. a następnie po prostu użyj tej samej instrukcji jstl, której używałeś wcześniej.

Oto przykład metody getSize, którą powinieneś dodać do swojej klasy firm:

public int getSize(){
    return companies.size();
}
 -1
Author: Eduardo Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-23 10:22:06

Użyj ${fn:length(companies) > 0}, aby sprawdzić rozmiar. Zwraca wartość logiczną

 -2
Author: Supun Dharmarathne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-21 07:03:29