Primefaces数据导出器和嵌套数据表



我在另一个dataTable内使用dataTable。当我尝试使用dataExporter导出(以任何格式)时,我得到了类似于:"org.primefaces.component.datatable.DataTable@1b675ca"而不是内部datatable值。

dataExporter的极限吗?我必须实现这个功能扩展dataExporter ?替代品吗?

由于我的外部DataTable只有一列,并且每一行都是子DataTable,因此我以这种方式扩展了pdfexporters:

@Override
    protected String exportValue(FacesContext context, UIComponent component) {
        if (component instanceof DataTable) {
            DataTable tab = (DataTable) component;
            try {
                document.add(exportPDFTable(context, tab, false, false, "UTF-8"));
            } catch (DocumentException ex) {
                Logger.getLogger(ExtendedPDFExporter.class.getName()).log(Level.SEVERE, null, ex);
            }
             return "";       
        else {
            return super.exportValue(context, component);
        }
    }

其中document是由export方法创建的。

现在的问题是每个子DataTable使用动态列,并且对于导出的PDF中的这些列,我得到了在每个子DataTable中复制的第一个子DataTable的值。对此有什么想法吗?

这是dataExporter的限制,您必须创建自己的导出器来完成此操作。我认为最好尝试从Export类(这是所有自定义导出类的超类)中重写exportValue方法。这里,如果value不是HtmlCommandLinkValueHolder的实例,只使用toString(),这就是为什么您看到它被打印出来的原因。此外,您还必须创建操作侦听器,它将实例化用于导出的自定义类。

最新更新