我正在使用一个dataTable
inside another dataTable
。当我尝试使用导出(以任何格式)时,dataExporter
我得到了类似:“ org.primefaces.component.datatable.DataTable@1b675ca
”而不是内部数据表值。
是极限dataExporter
吗?我必须实现这个功能扩展dataExporter
?有什么选择吗?
我正在使用一个dataTable
inside another dataTable
。当我尝试使用导出(以任何格式)时,dataExporter
我得到了类似:“ org.primefaces.component.datatable.DataTable@1b675ca
”而不是内部数据表值。
是极限dataExporter
吗?我必须实现这个功能扩展dataExporter
?有什么选择吗?
由于我的外部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
。对此有什么想法吗?
这是dataExporter
您必须让自己的出口商来执行此操作的限制。我认为最好尝试覆盖类中的方法(这是所有exportValue
自Export
定义导出类的超类)。在这里,如果 value 不是 instance ofHtmlCommandLink
或ValueHolder
只是toString()
被使用,这就是为什么你会看到 this 被打印出来。此外,您将必须制作您的动作侦听器,它将实例化您的自定义类以进行导出。