3

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

是极限dataExporter吗?我必须实现这个功能扩展dataExporter?有什么选择吗?

4

2 回答 2

2

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

@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);
        }
    }

wheredocument是由export方法创建的。

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

于 2013-04-05T09:57:33.540 回答
1

这是dataExporter您必须让自己的出口商来执行此操作的限制。我认为最好尝试覆盖类中的方法(这是所有exportValueExport定义导出类的超类)。在这里,如果 value 不是 instance ofHtmlCommandLinkValueHolder只是toString()被使用,这就是为什么你会看到 this 被打印出来。此外,您将必须制作您的动作侦听器,它将实例化您的自定义类以进行导出。

于 2013-03-28T13:18:09.363 回答