gpt4 book ai didi

jsf - 更改h :datatable cell color or style dynamically in JSF

转载 作者:行者123 更新时间:2023-12-04 14:03:50 25 4
gpt4 key购买 nike

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

数据表代码:

<h:dataTable value="#{post.comments}" var="comment" class="hs-table" rowClasses="#{comment.cssClass}" >
<h:column>
#{comment.name}
</h:column>
<h:column>
#{comment.email}
</h:column>
<h:column>
#{comment.msg}
</h:column>
</h:dataTable>

Comment类:
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 <h:dataTable>组件中,没有按行评估rowClasses属性。它基于每个表进行评估。但是,诸如Tomahawk和PrimeFaces之类的组件库支持您要在其<t:dataTable><p:dataTable>上查找的属性类型。

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

public String getRowClasses() {
StringBuilder rowClasses = new StringBuilder();

for (Comment comment : comments) {
if (rowClasses.length() > 0) rowClasses.append(",");
rowClasses.append(comment.getCssClass());
}

return rowClasses.toString();
}

然后将其称为

<h:dataTable ... rowClasses="#{post.rowClasses}">

也可以看看:
  • <h:dataTable> tag documentation-列出所有属性和可接受的值
  • 关于jsf - 更改h :datatable cell color or style dynamically in JSF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038769/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com