Zgadzam się, uważam, że takie podejście pozwala dostosować zachowanie eksportera jako najbardziej elastyczne i najmniej bolesne.
Ktoś zainteresowany wykorzystaniem metod preProcessor/postProcessor z tym? Oto przykład, jak to zrobić.
odważyłem się nieznacznie zmodyfikować metodę z odpowiedzi powyżej:
public void exportPDF(DataTable table, String filename,
String preProcessor, String postProcessor) throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
ExpressionFactory factory = context.getApplication().getExpressionFactory();
MethodExpression preProcessorME = factory.createMethodExpression(
context.getELContext(), preProcessor, null, new Class[] {Object.class});
MethodExpression postProcessorME = factory.createMethodExpression(
context.getELContext(), postProcessor, null, new Class[] {Object.class});
Exporter exporter = new ExtendedPDFExporter();
exporter.export(context, table, filename, false, false, "UTF-8",
preProcessorMe, postProcessorME);
context.responseComplete();
}
I to jak go używać na swojej stronie (ponownie, po prostu zmodyfikowany powyższy przykład):
<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',
'#{yourBean.preProcessPDF}', '#{yourBean.postProcessPDF}')}" />
Zauważ, że NIE MA ZASTRZEŻONYCH EL STATEMENTÓW (to i tak nie jest dozwolone), ostatnie dwa argumenty są prostymi łańcuchami zawierającymi wyrażenia EL.
Bez pokazywania kodu, obawiam się, że trudno będzie każdemu udzielić pomocy. –