JSF dataTable中的多个页脚行

Dav*_*ers 9 java datatable jsf

我想知道是否有任何方法在ah中有多个页脚行:dataTable(或t:datatable)我想做这样的事情(不编译)

<h:dataTable ... var="row">
  <h:column>
    <f:facet name="header">
     Header
    </f:facet>
    <h:outputText value="#{row.value}"/>
    <f:facet name="footer">
     FirstFooter
    </f:facet>
    <f:facet name="footer">
     Second Footer in a new tr
    </f:facet>
  </h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

结果是这样的事情

<table border=1 style="border:1px solid">
<thead><tr><th>Header</th></tr></thead>
<tbody><tr><td>Data Value 1</td></tr>
<tr><td>Data Value 2</td></tr>
<tr><td>Data Value ...</td></tr>
<tr><td>Data Value n</td></tr>
</tbody>
<tfoot>
<tr><td>FirstFooter</td></tr>
<tr><td>Second Footer in a new tr</td></tr>
</tfoot>
</table>
Run Code Online (Sandbox Code Playgroud)

任何想法如何最好地实现这一目标?谢谢.

编辑:如果我可以避免使用自定义控件/自定义渲染器,那将是很好的

Dav*_*ers 5

我最终使用的解决方案是与t:datatable相关联的自定义渲染器(对数据表的tomahawk扩展)

public class HtmlMultiHeadTableRenderer extends HtmlTableRenderer
Run Code Online (Sandbox Code Playgroud)

我只需要覆盖一个方法

protected void renderFacet(FacesContext facesContext,   
  ResponseWriter writer, UIComponent component, boolean header)
Run Code Online (Sandbox Code Playgroud)

在其中我查找了带有名称标题,标题2,标题3 ...标题的小平面(我只有一个缺失时停止查看)和页脚相同.这让我做了类似的代码

<h:dataTable ... var="row">
  <h:column>
    <f:facet name="header">
     Header
    </f:facet>
    <f:facet name="header2">
     A second Tr with th's
    </f:facet>
    <h:outputText value="#{row.value}"/>
    <f:facet name="footer">
     FirstFooter
    </f:facet>
    <f:facet name="footer2">
     Second Footer in a new tr
    </f:facet>
  </h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

这花费了大约一天(还有一些其他扩展,例如允许基于组的colspans)来编码和记录,