2010-08-26 21 views
28

Mam moją zmienną listy o nazwie services na mojej stronie JSP. Muszę dodać kilka znaczników do strony, jeśli na liście znajduje się więcej niż jeden element.Dostęp do rozmiaru kolekcji w JSP/JSTL/EL

Co chciałbym zrobić, to ...

<c:if test="${services.size() gt 1}"> 
    <!-- markup... --> 
</c:if> 

Ale nie można powoływać się na metody Java obiektów w EL (myślę, że jest to chyba czas 364823782 Mam żal, że fakt) . Dostęp do obiektów można uzyskać tylko na obiektach Java, upuszczając "Pobierz", np. $ {user.name} dla klasy użytkownika, która ma metodę getName().

Jaki jest właściwy sposób na ocenę tego testu?

Odpowiedz

45

Szukasz fn:length(services). Pamiętaj, aby zdefiniować przestrzeń nazw fn.

http://download.oracle.com/javaee/5/tutorial/doc/bnalg.html

+1

To jest prawidłowa odpowiedź, ale nie jest to rodzaj odpowiedzi Byłem naprawdę skacze do. Co za ból. Dlaczego nie możemy mieć Groovy lub Rhino zamiast EL ... –

+0

Tak właśnie jest z JSP. Mogę zdecydowanie polecić uaktualnienie do JSF i facels. –

+0

[Tutaj] (http://blog.smartkey.co.uk/2009/01/how-to-access-the-size-of-a-collection-in-a-sp-page-using-jstl-el /) ładny post na blogu o tym samym problemie (który dociera do tego samego rozwiązania). Zgadzam się, że JSP/EL suck i może zalecić uaktualnienie do Wicket. ;-) – Jonik

13

Dołącz lib znaczników w pliku JSP

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

Zastosowanie

<c:if test="${fn:length(services) gt 1}"> 
<!-- markup... --> 
</c:if> 
Powiązane problemy