【问题标题】:Change OutputText color inside a rich:dataTable在 Rich:dataTable 中更改 OutputText 颜色
【发布时间】:2012-02-06 21:47:54
【问题描述】:

我是 jsf 的新手,我无法解决这个问题。 我在 Rich:dataTable 中有一个 OutputText。我想根据它的值改变这个 OutputText 的颜色(这些值是整数)。例如,如果值 >= 50,则颜色为红色,否则颜色为白色。 提前致谢。

【问题讨论】:

    标签: jsf datatable richfaces


    【解决方案1】:

    用css很容易做到,例如:

    ...
    <h:outputText styleClass="#{row.value gt 50 ? 'red' : 'white'}" value="#{row.value}"/>
    ...
    

    其中红色和白色类是通过样式属性相应或直接定义的:

    ...
    <h:outputText style="color : #{row.value gt 50 ? 'red' : 'white'};" value="#{row.value}"/>
    ...
    

    在 Java 中计算颜色/类时甚至更简单的标记:

    ...
    <h:outputText styleClass="#{row.volumeTag}" value="#{row.value}"/>
    ...
    

    custom EL function

    ...
    <h:outputText styleClass="#{my:categorize(row.value)}" value="#{row.value}"/>
    ...
    

    【讨论】:

    • 如果我只有 2 个条件没关系,但我有 4 个条件,我想保持 xhtml 干净。我更喜欢使用 bean 方法来做到这一点。
    • @argonargon 添加了另一个选项。这里有点问题,因为您可能希望避免将颜色与业务逻辑混合。选择具有业务意义的类名称,例如“紧急”/“低音量”等可能会更好。
    • 对我来说,第三个选项更好(我向属性文件或类添加颜色),但是这样我必须向行添加一个方法,这是一个“视图”bean。这个视图 bean 的模型取自 Web 服务,所以我想避免它。最好的办法是在 backing bean 中有这个逻辑。
    • @argonargon 根据您使用的 EL 版本,您可以在静态方法或服务方法中实现逻辑,从而产生 styleClass="#{my:getCategory(row.value)}"styleClass="#{categorizer.evaluate(row.value)}"
    • jsf 1.2 不支持该语法:(
    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2021-05-28
    • 2013-11-06
    • 2019-04-17
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多