我最近从TomEE 1.5.2改为1.6.0,将MyFaces从2.1.10升级到2.1.13。 我现在在dataTable列样式中看到了不寻常的结果。
这很好用:
<h:dataTable value="#{testView.dataList}" var="r" columnClasses="col1,col2,col3,col4">
<h:column><f:facet name="header">Col 1</f:facet>#{r.col1}</h:column>
<h:column><f:facet name="header">Col 2</f:facet>#{r.col2}</h:column>
<h:column><f:facet name="header">Col 3</f:facet>#{r.col3}</h:column>
<h:column><f:facet name="header">Col 4</f:facet>#{r.col4}</h:column>
</h:dataTable>
但是,如果列的渲染属性值为evon,那么列类就会搞乱。
<h:dataTable value="#{testView.dataList}" var="r" columnClasses="col1,col2,col3,col4">
<h:column><f:facet name="header">Col 1</f:facet>#{r.col1}</h:column>
<h:column><f:facet name="header">Col 2</f:facet>#{r.col2}</h:column>
<h:column rendered="false"><f:facet name="header">Col 3</f:facet>#{r.col3}</h:column>
<h:column><f:facet name="header">Col 4</f:facet>#{r.col4}</h:column>
</h:dataTable>
给出
<tr>
<td class="col1">col1</td>
<td class="col2">col2</td>
<td class="col3">col4</td>
</tr>
第3列未按预期呈现,但第4列已获得col3样式而非col4样式。 正如我所说的那样,它工作正如我在2.1.13之前所期望的那样,你认为这是一个MyFaces的错误吗?
答案 0 :(得分:1)
这不是错误,而是按规范,columnClasses按顺序应用于活动列。这是MYFACES-3749中的一个修复,但我使用最新版本的Mojarra进行了检查,它的工作原理相同。
我的建议是使用tomahawk扩展数据表,它就像h:datatable一样,但有一些扩展功能。在您的情况下,您可以这种方式设置列的styleClass。
<t:datatable var="row" ...>
<t:column styleClass="#{row.styleClass}">
...
</t:column>
</t:datatable>
此问题已在规范中报告过。请参阅JAVASERVERFACES_SPEC_PUBLIC-217。