我在另一个dataTable
里面使用了dataTable
。当我尝试使用dataExporter
导出(以任何格式)我得到类似的东西:“org.primefaces.component.datatable.DataTable@1b675ca
”而不是inner-dataTable值。
这是dataExporter
的限制吗?我必须实现这个功能扩展dataExporter
?任何替代品?
这是dataExporter
的限制,你必须让自己的出口商这样做。我认为最好尝试覆盖exportValue
类(它是所有自定义导出类的超类)的方法Export
。在这里,如果value不是HtmlCommandLink
或ValueHolder
的实例,则使用toString()
,这就是为什么你看到这是打印的原因。此外,您必须创建动作侦听器,它将实例化您的自定义类以进行导出。
由于我的外部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);
}
}
其中document
是由export
方法创建的。
现在的问题是每个子DataTable
使用动态列,并且对于导出的PDF中的那些列,我获得了在每个子DataTable
中复制的第一个子DataTable
的值。有什么想法吗?