【发布时间】:2013-03-13 21:06:17
【问题描述】:
我正在使用 JSF,并且每个示例“qwerty”都有一个输出文本,如果满足某些条件,我想以不同的方式显示/格式化。 所以每个例子如果:
- cond1 为真,那么我想显示
qwerty - cond1 为假然后我想显示 qwerty
等等。
有办法吗?
【问题讨论】:
标签: jsf rendering conditional
我正在使用 JSF,并且每个示例“qwerty”都有一个输出文本,如果满足某些条件,我想以不同的方式显示/格式化。 所以每个例子如果:
等等。
有办法吗?
【问题讨论】:
标签: jsf rendering conditional
您可以使用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
【讨论】:
简洁的方法是创建 CSS 类
<h:outputText value="qwerty"
styleClass="#{backingBean.cond1 ? 'classA' : 'classB'}" />
【讨论】:
在类似的情况下,我使用以下
<h:outputText value="yourValueFromYourBeanOrWhatever" styleClass="anArbitraryName#{managedBean.condition}"/>
在我的 CSS 文件中,我定义了类:
.anArbitraryNametrue{}
和
.anArbitraryNamefalse{}
【讨论】:
有条件的。在审讯之前你提出条件。如果为真,则返回 t ":" 之前的内容。如果为 false,则返回 ":" 后面的内容。
<h:outputText value="#{condition ? 'true' : 'false'}" />
【讨论】: