Динамическое изменение цвета или стиля ячейки h: datatable в JSF

У меня есть дата, где я хочу изменить цвет ячейки на основе анализа, который выполняется на содержание. Таблица связана с массивом объектов 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>

Класс Комментарий:

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;
}

}

Где cssClass обновляется в управляемом компоненте:

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

Класс никогда не будет назначен. Я что-то не так делаю, или это просто невозможно?

Ответы на вопрос(1)

Решение Вопроса

В стандарте 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}">
See also: <h:dataTable> tag documentation - lists all attributes and the accepted values
 Webster Gordon14 июн. 2012 г., 20:21
Хорошо, отлично, спасибо большое. Я попробую.

Ваш ответ на вопрос