2013-03-13 61 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'}" />