JSF:动态更改数据表单元格颜色

我有一个数据表,我想根据对内容运行的一些分析来更改单元格的颜色。 该表链接到一个Comment对象数组,我给出了一个String cssClass,它在运行分析后得到更新。 这是我尝试插入数据表的rowClasses属性。 它不起作用,我认为问题可能是我无法从数据表声明中访问为数据表的每一行创建的变量。

数据代码:

  #{comment.name}   #{comment.email}   #{comment.msg}   

评论类:

 public class Comment { private String msg; private String email; private String name; private Date date; private String cssClass; public Comment(){ cssClass = "normColumn"; } epublic String getCssClass() { return cssClass; } public void setCssClass(String cssClass) { this.cssClass = cssClass; } 

}

在托管bean中更新cssClass的位置:

 if(tone>0) c.setCssClass("commentPos"); else if(tone<0) c.setCssClass("commentNeg"); 

该课程永远不会被分配。 我做错了什么,或者这根本不可能?

在标准的JSF 组件中,遗憾的是, rowClasses属性不是按行计算的。 它是基于每个表进行评估的。 然而,像Tomahawk和PrimeFaces这样的组件库支持你在上寻找的那种属性。

使用标准的JSF 组件,您需要提供以逗号分隔的所有行类的字符串。 这看起来像这样:

 public String getRowClasses() { StringBuilder rowClasses = new StringBuilder(); for (Comment comment : comments) { if (rowClasses.length() > 0) rowClasses.append(","); rowClasses.append(comment.getCssClass()); } return rowClasses.toString(); } 

然后被引用为

  

也可以看看:

  • 标签文档 – 列出所有属性和可接受的值