我正在使用p:dataExporter将数据导出到客户端计算机。它根据tareget方法中提到的表中的数据创建给定格式的文件。在导出按钮单击文件将导出到客户端计算机。这一切都很好。 现在我想提供一个“打开”按钮,让文件打开/不用将文件下载到客户机。 p:dataExporter没有这样的属性。 JSF是否提供此类属性或推荐的任何其他组件?
这是我的代码示例
<p:dataExporter type="#{applicationFilterBean.exportFileType}" target=":appForm:appTable"
fileName="#{applicationFilterBean.exportFileName}" />
答案 0 :(得分:1)
感谢你的建议Michele,我已经创建了我的customExport类。唯一需要做的改变是将responseHeader更改为Content-Disposition-inline,
response.setHeader("Content-disposition", "inline;filename="+ fileName + ".pdf");
这是完全正常的。
答案 1 :(得分:0)
不可能因为内容处理是硬编码。
例如,查看org.primefaces.component.export.PDFExporter
源代码:
protected void writePDFToResponse(ExternalContext externalContext, ByteArrayOutputStream baos, String fileName) throws IOException, DocumentException {
externalContext.setResponseContentType("application/pdf");
externalContext.setResponseHeader("Expires", "0");
externalContext.setResponseHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
externalContext.setResponseHeader("Pragma", "public");
externalContext.setResponseHeader("Content-disposition", "attachment;filename="+ fileName + ".pdf");
externalContext.setResponseContentLength(baos.size());
externalContext.addResponseCookie(Constants.DOWNLOAD_COOKIE, "true", Collections.<String, Object>emptyMap());
OutputStream out = externalContext.getResponseOutputStream();
baos.writeTo(out);
externalContext.responseFlushBuffer();
}
也许其他一些库提供此功能,否则您应该开发自己的DataExporter。