JSF dataTable中的多个页脚行 [英] Multiple Footer Rows in a JSF dataTable

查看:121
本文介绍了JSF dataTable中的多个页脚行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 < h:dataTable ... var =row> 
< h:column>
< f:facet name =header>
标题
< / f:facet>
< h:outputText value =#{row.value}/>
< f:facet name =footer>
FirstFooter
< / f:facet>
< f:facet name =footer>
第二个页脚在一个新的tr
< / f:facet>
< / h:column>
< / h:dataTable>

结果是这样的一个这样的

 < table border = 1 style =border:1px solid> 
< thead>< tr>< th>标头< / th>< / tr>< / thead>
< tbody>< tr>< td>数据值1< / td>< / tr>
< tr>< td>数据值2< / td>< / tr>
< tr>< td>数据值...< / td>< / tr>
< tr>< td>数据值n< / td>< / tr>
< / tbody>
< tfoot>
< tr>< td> FirstFooter< / td>< / tr>
< tr>< td>新tr中的第二个页脚< / td>< / tr>
< / tfoot>
< / table>

任何想法如何最好地完成这个?
谢谢。



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

解决方案

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

  public class HtmlMultiHeadTableRenderer extends HtmlTableRenderer 

我只有覆盖一种方法

  protected void renderFacet(FacesContext facesContext,
ResponseWriter writer,UIComponent component,boolean header)

其中我查找名称为header,header2,header3 ... headerN(我停止寻找为很快,因为有一个缺失)和与页脚相同。这样我就可以像

 < h:dataTable ... var =row> 
< h:column>
< f:facet name =header>
标题
< / f:facet>
< f:facet name =header2>
第二个Tr与th的
< / f:facet>
< h:outputText value =#{row.value}/>
< f:facet name =footer>
FirstFooter
< / f:facet>
< f:facet name =footer2>
第二个页脚在一个新的tr
< / f:facet>
< / h:column>
< / h:dataTable>

这花了大约一天(有一些其他的扩展,如允许colspans基于组)代码和文档,


I am wanting to know if there is any way to have multiple footer rows in a h:dataTable (or t:datatable) I want to do somthing like this (which does not compile)

<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>

With the result being somthing like this

<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>

Any ideas how best to accomplish this? Thanks.

EDIT: It would be great if I could avoid using a custom control/custom renderer

解决方案

The solution I ended up using was a custom renderer associated with t:datatable (the tomahawk extension to datatable)

public class HtmlMultiHeadTableRenderer extends HtmlTableRenderer

I only had to override one method

protected void renderFacet(FacesContext facesContext,   
  ResponseWriter writer, UIComponent component, boolean header)

with in which I looked for facets with names header, header2, header3 ... headerN (I stop looking as soon as there is one missing) and the same with footer. This has allowed me do do code like

<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>

This took about one day(with some other extensions like allowing colspans based on groups) to code and document,

这篇关于JSF dataTable中的多个页脚行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆