2013-03-13 13 views

Odpowiedz

12

Można użyć ternary operator aby wybrać styl, który chcesz zastosować w zależności od stanu:

<h:outputText value="qwerty" 
    style="#{backingBean.cond1 ? 'text-decoration:line-through;':'fontstyle:italic;'}"> 

A byłoby jeszcze lepiej, gdyby użyć klas css w kolejności stylów inline. Powodzenia!

Użycie "warunku" wbudowanego w EL jest również możliwe, patrz using greater than logical expression in rendered attribute. Czytaj także discussion about using inline in the xhtml or in the javabean

+0

Pomyślałem o tym, ale pomyślałem, że jest to lepszy, bardziej elegancki sposób. Dziękuję za Twoją odpowiedź! – CyberGriZzly

+0

To nie jest najbardziej elegancki sposób. W rzeczywistości tworzysz dwa komponenty w drzewie komponentów. Zachowaj także [DRY] (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself)! –

+0

To tylko sposób na podstawowe wyjaśnienie, jak działa warunkowa ocena renderowania w JSF. Moje drugie podejście jest lepsze ;-) –

6

Neat sposobem jest utworzenie klas CSS

<h:outputText value="qwerty" 
    styleClass="#{backingBean.cond1 ? 'classA' : 'classB'}" /> 
+0

Dzięki! To ładnie wygląda! – CyberGriZzly

7

w podobnych sytuacjach, używam następujących

<h:outputText value="yourValueFromYourBeanOrWhatever" styleClass="anArbitraryName#{managedBean.condition}"/> 

I w moim pliku CSS I zdefiniowanie klasy:

.anArbitraryNametrue{} 

i

.anArbitraryNamefalse{} 
0

Warunkowo. Przed przesłuchaniem stawiasz warunek. Jeśli ma wartość true, zwraca to, co jest przed t ":". Jeśli jest false, zwraca to, co jest za ":".

<h:outputText value="#{condition ? 'true' : 'false'}" /> 
Powiązane problemy