在JSF中,您可以使用EL表达式将styleClass设置如下:
<rich:column>
<h:outputText value="12" id="sumOfAllValues" styleClass="#{!t330RowItems.showSpecialField ? 'rich-table-green' : 'rich-table-cell'}"/>
</rich:column>
现在我使用org.richfaces.component.html.HtmlColumn在Java代码中构建表,唯一的问题是何时执行此操作:
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?
答案 0 :(得分:0)
您需要将其设置为值得信赖的ValueExpression
,而不是普通的String
。您可以按ExpressionFactory#createValueExpression()
创建一个。您可以通过Application#getExpressionFactory()
在JSF上下文中获取表达式工厂。
所以,这应该做:
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);