2011-12-06 10 views
7

chcę zmienić wartość zmiennej na podstawie warunku więc próbowałem następujące:Warunkowe zmienna definicja w JSF

<h:head> 

    <ui:param name="userCase" value="Insert" /> 

    <ui:fragment rendered="#{employee.employeesBulkInsert==false}"> 
     <ui:param name="userCase" value="Update" /> 
    </ui:fragment> 

     <title>#{userCase} Employee </title> 

</h:head> 

ale to nie działa w przypadku aktualizacji, to pokazuje pusty ciąg, jakieś pomysły, dlaczego?

Wiem, że istnieją inne rozwiązania, takie jak definiowanie zmiennej w backingu, lub utwórz warunkowy fragment UI na tagu tytułu bezpośrednio, ale chcę wiedzieć, dlaczego powyższe nie działa, proszę o radę, dziękuję.

+0

To bardzo dobra praktyka, aby powiedzieć, co zachowanie występują (błąd? Co to za wiadomość? Nie wyjście można się spodziewać? Co ty oczekiwali?), nie tylko "nie działa". – Gian

+0

na pewno, zaktualizuję pytanie :) –

Odpowiedz

13

<ui:fragment> jest znacznik renderowania-czas gdy <ui:param> to obsługi znacznika (koparki tag są łatwo recognizeable przez nieobecność rendered atrybut). Dlatego po utworzeniu widoku ustawiany jest <ui:param>, niezależnie od wyniku <ui:fragment>. Atrybut rendered z <ui:fragment> jest oceniany tylko wtedy, gdy ma być renderowany już zbudowany widok.

Zamiast tego chcesz utworzyć warunek za pomocą modułu obsługi znaczników, na przykład JSTL <c:if>.

<ui:param name="userCase" value="Insert" /> 

<c:if test="#{not employee.employeesBulkInsert}"> 
    <ui:param name="userCase" value="Update" /> 
</c:if> 

(zauważ, że usunąłem niepotrzebne logiczną ==false porównanie)