2009-08-26 13 views
8

Jaka jest składnia wywołania list.size() w szablonie JSF 2.0 Facelets (np. Za pomocą elementu h: outputText)?Jak wywołać List.size() z szablonu JSF 2.0 Facelets?

+0

Możliwy duplikat: http://stackoverflow.com/questions/206161/jsf- list-length – seth

+0

@seth - Chociaż zawiera jedną rozsądną odpowiedź (która powinna działać z JSF 2.0, chociaż odpowiedź jest przed nim), zadaję to pytanie konkretnie, aby dowiedzieć się, czy są jakieś aktualizacje JSF 2.0, które mogłyby wpłynąć na rozwiązanie. :) – jsight

Odpowiedz

22

Jak o tym:

<h:outputText value="#{fn:length(someBean.someList)}" /> 

Musisz odwołać functions TagLib na stronie JSF (URI: http://java.sun.com/jsp/jstl/functions).

5

To nie jest problem z JSF 2.0 dokładnie. Specyfikacja JSF nadal wymaga klasy, która jest zgodna ze specyfikacją bean. Klasy kolekcji nie robią tego za pomocą metody .size(). Musiałby on nadal być .getSize(). Biorąc pod uwagę potrzebę "standardowego" sposobu dostępu do wartości klasy, w najbliższym czasie nie obejdziemy tego w JSF. Ktoś musi naprawić klasy kolekcji.

+0

IC ... Miałem nadzieję, że zmienili składnię wyrażenia, aby umożliwić wywołania metod. Może być nadużywany, ale z łatwością obejmie takie sprawy. :) Wciąż nie rozumiem, dlaczego projektant kolekcji wybrał to w ten sposób. – jsight

5

Spróbuj #{myBean.myList.size()}

+2

To nie zadziała w przypadku standardowego el. Istnieją jednak rozszerzenia (takie jak jboss el), które dopuszczają ten zapis. –

+2

To będzie działać na każdym serwerze aplikacji Java EE 6 – Lincoln

+0

Najwyraźniej tak nie jest (ku mojemu zdziwieniu): zobacz http://community.jboss.org/thread/173971 – Kawu

2

Uwaga: Dokładna nazw dla "Fn" dodaje tak:

<html xmlns="http://www.w3.org/1999/xhtml" 
     ... 
     xmlns:fn="http://java.sun.com/jsp/jstl/functions"> 
Powiązane problemy