2

不幸的是,OpenFaces Datatable还没有与 Primefaces 或 IceFaces 不同的导出功能。虽然导出是小菜一碟,但过滤 IceFaces 或 primefaces 数据表并不容易,但 primeFaces 的过滤不适用于 JSF DataModel(可悲但确实如此)。

使用 OpenFaces DataTable 过滤是小菜一碟,非常方便和强大。但是想要将她/他过滤的数据表导出为CSVMS Excel等格式的最终​​用户怎么样。

来自 OpenFaces 的伟大 Dmitry 给了我一个提示:使用 OpenFaces DataTable 方法:getDisplayedRowDatas()它将从数据表中获取当前显示的行,然后使用像 Itext 这样的第三方库以 PDF 格式导出。

在我看来,这应该是这样的:

  • 为此目的创建一个支持 bean。
  • Apache POI第三个库添加到类路径
  • 使用 Apache POI 编写代码以使用其方法导出 OpenFaces 数据表的内容getDisplayedRowsDatas()- 但恐怕此方法不会返回列标题的名称 - 或者将 OpenFaces 数据表呈现的 HTML 表作为缓冲字符串获取并使用 Apache POI 以生成与缓冲区一起流式传输的 Excel 文件。

在我最近遇到的 MyFaces 示例中:MyFaces Datatable Export Example,开发人员使用 Myfaces 组件<t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer />将数据表的内容转换为缓冲字符串,这使事情变得更容易。不幸的是,JSF Core 没有这样的组件。

以前有人遇到过这个吗?非常感谢帮助或更好的选择。

4

1 回答 1

5

您可以查看实验性 DataTable 导出 API,该 API 在当前的夜间构建中可用。如果它经得起时间的考验,我们将正式宣布这个 API。目前,只有 CSV 导出可用,但您可以为其他格式编写自己的导出器。这是您应该放入操作处理程序以使其工作的代码:

DataTable myTable = Faces.component("form:myTable", DataTable.class);
myTable.export(new CSVTableExporter());

它导出表当前显示的所有行和列的数据(当前仅导出分页表的当前页面)。

于 2011-06-29T16:58:29.567 回答