java - Richfaces HtmlColumn 样式类覆盖

标签 java jsf richfaces el

在 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-cellrich-table-green 作为 styleClass 有什么想法吗?

最佳答案

您需要将其设置为完整的 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);

关于java - Richfaces HtmlColumn 样式类覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265505/

相关文章:

java - Orika:如何使用嵌套映射器进行映射

java - Http 请求的 Spring Kafka 监听器

java - 如何解决 "invalid resource directory name",资源 "crunch"

css - 丰富的面孔 : Is it possible to set the look of output text like input type password?

java - 使用谷歌应用引擎将文件上传到 blobstore 时出现 http 400 错误

java - 具有动态属性的对象的添加/编辑操作

css - &lt;!--[if IE]> 条件注释在 Facelets 中呈现为 HTML 转义

java - JSF Facelets 许可证

javascript - 如何选中/取消选中列表中的所有复选框

java - 重新部署后使用 JSF 2 防止 ViewExpiredException