Перезаписать класс стиля Richfaces HtmlColumn - PullRequest
1 голос
/ 13 февраля 2012

В JSF вы можете использовать выражение EL для установки styleClass следующим образом:

<rich:column>
 <h:outputText value="12" id="sumOfAllValues" styleClass="#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}"/>
</rich:column>

Теперь я строю таблицу в коде Java с использованием org.richfaces.component.html.HtmlColumn, единственная проблема заключается в том, когда это делается:

htmlColumn.setStyleClass("#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}");

Сгенерирован следующий HTML-код:

<tbody id="j_id154:tb">
 <tr class="rich-table-row rich-table-firstrow ">
  <td class="rich-table-cell #{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}" id="j_id154:0:j_id155">55</td>
 </tr>

Проблема в том, что она не оценивает выражение EL. Любые идеи о том, как я могу получить rich-table-cell или rich-table-green в качестве styleClass?

1 Ответ

0 голосов
/ 13 февраля 2012

Вам нужно установить его как полноценное ValueExpression вместо простого ванили String.Вы можете создать его с помощью ExpressionFactory#createValueExpression().Вы можете получить фабрику выражений в контексте JSF: Application#getExpressionFactory().

Итак, это должно сделать:

ValueExpression styleClassVE = context.getApplication().getExpressionFactory()
    .createValueExpression(context.getELContext(), "#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}", String.class);

htmlColumn.setStyleClass(styleClassVE);
// or htmlColumn.setValueExpression("styleClass", styleClassVE);
...