gpt4 book ai didi

jsf - p :dataExporter does not recognize p:cellEditor

转载 作者:行者123 更新时间:2023-12-04 01:54:39 24 4
gpt4 key购买 nike

我有一个可编辑的 <p:dataTable><p:cellEditor>我想使用 <p:dataExporter> 将该表格的内容导出为 PDF 格式.

我已经包括了 itext 2.1.7 jar .我得到了 PDF 格式的输出,但它显示了 Object#toString()所有 <p:cellEditor> 的值像这样的组件:

org.primefaces.component.celleditor.CellEditor@1bd59e1

如何导出 <p:cellEditor> 的输出值反而?

最佳答案

<p:cellEditor>确实不被 PrimeFaces 标准数据导出器认可。
我之前已将此事报告给 PF 人员 issue 4013举个例子,不仅提到 CellEditor ,还有HtmlGraphicImage (我们使用图像来显示 bool 状态,我们希望在 PDF/XML/XLS/CSV 报告中显示其 alt)。

首先,创建一个扩展标准 PDFExporter 的新类。如下:

public class ExtendedPDFExporter extends PDFExporter {

@Override
protected String exportValue(FacesContext context, UIComponent component) {
if (component instanceof CellEditor) {
return exportValue(context, ((CellEditor) component).getFacet("output"));
}
else if (component instanceof HtmlGraphicImage) {
return (String) component.getAttributes().get("alt");
}
else {
return super.exportValue(context, component);
}
}

}

然后,要使用它,请以编程方式调用它而不是通过 <p:dataExporter> .
<p:dataTable binding="#{table}" editable="true" ...>
<p:column><p:cellEditor>...</p:cellEditor></p:column>
<p:column><p:cellEditor>...</p:cellEditor></p:column>
<p:column><p:cellEditor>...</p:cellEditor></p:column>
<p:column exportable="false"><p:rowEditor /></p:column>
</p:dataTable>
<h:commandLink value="PDF" action="#{bean.exportPDF(table, 'filename')}" />


public void exportPDF(DataTable table, String filename) throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
Exporter exporter = new ExtendedPDFExporter();
exporter.export(context, table, filename, false, false, "UTF-8", null, null);
context.responseComplete();
}

随意找数据表 UIComponent#findComponent()而是仅在操作方法中设置文件名。上面的代码只是示例性的。

关于jsf - p :dataExporter does not recognize p:cellEditor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14411389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com