2013-03-13 8 views

risposta

12

È possibile utilizzare un ternary operator al fine di scegliere lo stile che si desidera applicare a seconda della condizione:

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

e sarebbe ancora meglio se si utilizzano le classi CSS in ordine di stili inline. In bocca al lupo!

È anche possibile utilizzare la 'condizione' in linea nell'EL, vedere using greater than logical expression in rendered attribute. Leggi anche il modo Neat discussion about using inline in the xhtml or in the javabean

+0

Ci ho pensato, ma ho pensato che fosse un modo più elegante. La ringrazio per la risposta! – CyberGriZzly

+0

Questo non è il modo più elegante. In realtà crei due componenti nell'albero dei componenti. Conserva anche [DRY] (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself)! –

+0

È solo un modo per fornire una spiegazione di base su come la valutazione condizionale del rendering funziona in JSF. Il mio secondo approccio è migliore ;-) –

6

è quello di creare classi CSS

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

Grazie! Sembra carino! – CyberGriZzly

7

In situazioni simili, io uso seguente

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

E nel mio file CSS ho definire le classi:

.anArbitraryNametrue{} 

e

.anArbitraryNamefalse{} 
0

Con il condizionale. Prima dell'interrogatorio hai messo la condizione. Se vero, restituisce ciò che è prima di ":". Se è falso, restituisce cosa c'è dietro ":".

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