如何根据PrimeFaces中的状态值(通过/失败)进行着色?

时间:2019-07-04 05:18:11

标签: jquery css primefaces

我正在尝试使用jQuery根据列状态值(通过/失败/进行中)设置颜色。

我已经复制了表格并将其粘贴到jsfiddle中进行尝试,并且可以正常工作。但是,在实际的XHTML文件中,jQuery无法正常工作。

.xhtml

public class User {

    private int id;
    private String name;
    public User(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + "]";
    }


}

注意:jsfiddle中给定的HTML复制了运行时数据。 (xhtml> html)

http://jsfiddle.net/z2ty0q8k/

我希望根据状态列的值来更改颜色

1 个答案:

答案 0 :(得分:4)

我认为最好使用Primefaces Datatable RowColor
首先,必须在CSS中创建styleclass。


CSS:

<style type="text/css">
.passed {
    background-color: red !important;
}
.inProgress {
    background-color: green !important;
}   
</style>

然后,您必须在数据表中使用rowStyleClass(这在您的代码中是错误的)

<p:dataTable var="var" value="#{someBean.dataList}" rowStyleClass="#{someBean.checkStatus(var.status)}">
<p:column headerText="Id">
    <h:outputText value="#{var.id}" />
</p:column>

<p:column headerText="Status">
    <h:outputText value="#{var.status}" />
</p:column>
.
.
.
</p:dataTable>

要检查状态,您可以在ManageBean中使用方法或使用带有内联if语句的primefaces示例之类的东西

    public String checkStatus(String status){
    if (status.equals("InProgress")) {
        //This is the styleClass in css
        return "inProgress";
    } else if (status.equals("Passed")){
        //This is the styleClass in css
        return "passed";
    }else{
        return null;
    }
 }