【问题标题】:JSF outputtext conditional display/styling. Differently depending on conditionJSF outputtext 条件显示/样式。视情况而定
【发布时间】:2013-03-13 21:06:17
【问题描述】:

我正在使用 JSF,并且每个示例“qwerty”都有一个输出文本,如果满足某些条件,我想以不同的方式显示/格式化。 所以每个例子如果:

  • cond1 为真,那么我想显示 qwerty
  • cond1 为假然后我想显示 qwerty

等等。

有办法吗?

【问题讨论】:

    标签: jsf rendering conditional


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 我想到了,但我认为这是一种更好更优雅的方式。谢谢你的回答!
    • 这不是最优雅的方式。您实际上在组件树中创建了两个组件。同时保持DRY
    • 这只是一种基本解释条件渲染评估如何在 JSF 中工作的方法。我的第二种方法更好;-)
    【解决方案2】:

    简洁的方法是创建 CSS 类

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

    【讨论】:

      【解决方案3】:

      在类似的情况下,我使用以下

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

      在我的 CSS 文件中,我定义了类:

      .anArbitraryNametrue{}
      

      .anArbitraryNamefalse{}
      

      【讨论】:

        【解决方案4】:

        有条件的。在审讯之前你提出条件。如果为真,则返回 t ":" 之前的内容。如果为 false,则返回 ":" 后面的内容。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-01
          • 2011-01-14
          • 2010-11-22
          • 2015-03-19
          • 2014-03-26
          相关资源
          最近更新 更多