2013-03-13 60 views
6

我正在使用JSF,並且每個示例「qwerty」都有一個輸出文本,如果符合某些條件,我想要顯示/格式不同。 所以每舉例來說,如果:JSF outputtext條件顯示/樣式。取決於條件

  • COND1爲真,那麼我想顯示 QWERTY
  • COND1爲假的話,我想顯示 QWERTY

等。

有沒有辦法?

回答

12

您可以依次用ternary operator選擇風格你要根據條件申請:

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

而且,如果您的內嵌樣式順序使用CSS類的話會更好。祝你好運!

也可以在EL中內聯使用'條件',請參閱using greater than logical expression in rendered attribute。閱讀也是discussion about using inline in the xhtml or in the javabean

+0

我想到了,但我認爲這是一個更好的更優雅的方式。謝謝您的回答! – CyberGriZzly 2013-03-13 21:16:38

+0

這不是最優雅的方式。您實際上在組件樹中創建了兩個組件。同時保留[DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself)! – 2013-03-13 21:18:06

+0

這僅僅是一個給出關於條件渲染評估如何在JSF中工作的基本解釋的方法。我的第二種方法更好;-) – 2013-03-13 21:23:15

6

整潔的方法是創建CSS類

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

謝謝!這看起來不錯! – CyberGriZzly 2013-03-13 21:19:24

7

在類似的情況下,我用以下

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

而在我的CSS文件,我定義的類:

.anArbitraryNametrue{} 

and

.anArbitraryNamefalse{} 
0

與條件。在審訊之前,你把條件。如果爲true,則返回t之前的內容:「」。如果它爲假,則返回「:」後面的內容。

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