不幸的是,OpenFaces Datatable还没有与Primefaces或IceFaces不同的导出功能。虽然导出是小菜一碟,但过滤IceFaces或primefaces就不那么容易了,但是primeFaces的筛选并不适用于JSF (可悲但真实)。
使用OpenFaces DataTable筛选是小菜一碟,而且非常方便和强大。但是,如果最终用户想要导出一个过滤后的数据表,以像CSV或MS Excel这样的格式如何呢?
来自OpenFaces的伟大的Dmitry给了我一个提示:使用OpenFaces datatable方法:getDisplayedRowDatas(),它将从DataTable中获取当前显示的行,然后使用一些像Itext这样的库来导出PDF。
在我看来,这应该是这样的:
getDisplayedRowsDatas() --但恐怕此方法不会返回列的标题名称,也不会抓取由OpenFaces Datatable作为缓冲字符串呈现的OpenFaces表,并使用Apache生成一个与缓冲区流的OpenFaces文件。在我最近遇到的MyFaces示例中:MyFaces数据表导出示例,开发人员使用Myfaces <t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer />将datatable的内容转换为一个缓冲字符串,这使事情变得更简单。遗憾的是,JSF没有这样的组件。
以前有人见过这个吗?帮助或更好的替代方案是非常感谢的。
发布于 2011-06-29 16:58:29
您可以查看实验性的DataTable导出API,它可以在当前的夜间构建中使用。如果这个API经得起时间的考验,我们将正式声明它。目前,只有CSV导出可用,但您可以为其他格式编写自己的导出程序。下面是您应该在操作处理程序中添加的代码,以使其工作:
DataTable myTable = Faces.component("form:myTable", DataTable.class);
myTable.export(new CSVTableExporter());它导出表当前显示的所有行和列的数据(当前仅导出分页表的当前页)。
https://stackoverflow.com/questions/6479005
复制相似问题