【问题标题】:JSF datatable colore a row based on condition [duplicate]JSF数据表根据条件为一行着色[重复]
【发布时间】:2025-12-10 10:40:01
【问题描述】:

如果国家列的文本是“英国”,我想为数据表的一行着色。这是我的 XHTML 文件:

 <h:dataTable value="#{personBean.persons}" var="p" 
    rowStyleClass="#{p.country eq 'UK' ? 'colored' : null}">

       <h:column >
            <f:facet name="header">Country</f:facet>
             "#{p.country}"
      </h:column>
 </h:dataTable>

这是我的 CSS 文件:

.colored {
   background-color: #cceeff;
   color: #FFFFFF;
}

我无法实现一行是彩色的。

【问题讨论】:

  • 它对我有用。在 chrome 控制台中检查 CSS 文件是否正确链接到您的页面并清除捕获然后重试。在您的情况下,还要从"#{p.country}" 中删除双引号。

标签: jsf datatable


【解决方案1】:

本机 JSF h:dataTable 不会在每行基础上评估 rowStyleClass

它将发生在 Primefaces p:dataTable

您可以做的另一种选择是在您的ManagedBean 处构建一个以逗号分隔的样式类的String,并将其提供给rowStyleClass 属性。

例如:
托管豆:

String rowStyles;
public void getRowStyles(){
    for(Person p: persons){
      rowStyles+=p.getCountry().equals("UK") ? "colored," : ",";
    }

    return rowStyles;
}

XHTML:

<h:dataTable rowStyleClass="#{personBean.rowStyles}" ...>

【讨论】: