我正在尝试为<h:dataTable>的特定行分配特定的CSS类。有什么方法可以访问和定制结果表行?

最佳答案

rowClasses属性绑定到bean属性,该属性返回所需的CSS类字符串。

<h:dataTable value="#{bean.list}" rowClasses="#{bean.rowClasses}">




public String getRowClasses() {
    StringBuilder rowClasses = new StringBuilder();
    for (Item item : list) {
        if (rowClasses.length() > 0) rowClasses.append(",");
        rowClasses.append(item.getRowClass());
    }
    return rowClasses.toString();
}




更新以澄清,这样您可以完全控制rowClasses字符串。请注意,以上仅是一个启动示例,不一定需要通过Item#getRowClass()左右获取。您甚至可以在带有计数器的简单for循环中完成此操作。

例如。

public String getRowClasses() {
    StringBuilder rowClasses = new StringBuilder();
    for (int i = 0; i < list.size(); i++) {
        if (rowClasses.length() > 0) rowClasses.append(",");
        rowClasses.append(selected.contains(i) ? "selected" : "none");
    }
    return rowClasses.toString();
}


其中selectedList<Integer>。如果包含1、2和5,则返回的字符串将如下所示,列出10个项目:

none,selected,selected,none,none,selected,none,none,none,none

10-06 12:01