我有一个基于JSF2和RichFaces的应用程序;我已经开发了一个使用POI在PDF中导出一些数据的过程。
在我的XHTML中,我调用了一个方法:
<rich:modalPanel>
...
<p:commandButton image="/images/excel.png" action="#{managedBean.doXLS}" ajaxSingle="true" rendered="true" value="Exportar a XLS">
<f:setPropertyActionListener target="#{statisticsBean.optionToExport}" value="1"/>
</p:commandButton>
...
</rich:modalPanel>
我正在用Java调用这个:
... // create XLS
response.setHeader( "Content-Disposition", "attachment; filename=\"" + nombreFichero + ".xls\"" );
response.setContentType("application/vnd.ms-excel");
OutputStream o = response.getOutputStream();
if ( workbook!=null && o!=null)
workbook.write(o);
o.flush();
o.close();
if (!FacesContext.getCurrentInstance().getResponseComplete())
FacesContext.getCurrentInstance().responseComplete();
没有抛出任何异常,但我的屏幕没有任何反应。这个问题到底是什么?
解决:
好的,在与@BalusC谈话后(谢谢),我无法回复“rich:modalPanel”中的文件,因为这个文件是由ajax创建的。没有数学,如果是ajaxsingle或不。
答案 0 :(得分:0)
好的,在与@BalusC谈话后(谢谢),我无法回复“rich:modalPanel”中的文件,因为这个文件是由ajax创建的。没有数学,如果是ajaxsingle或不。
答案 1 :(得分:0)
我是这样做的:
<a4j:commandButton id="printDocument" value="Pdf link"
action="generatePdf" styleClass="button" oncomplete="openPdf();" rendered="/>
将OpenPDF定义为:
<script language="JavaScript">
//<![CDATA[
function openPdf() {
pdfWindow = window.open('#{pdfDocument.documentLink}');
if (window.focus) {pdfWindow.focus()};
return false;
}
//]]>
</script>
这是使用Richfaces,Facelets和Spring Webflow。操作generatedPdf调用webflow操作,该操作调用Java类,该类在磁盘上的某处生成pdf文档。 pdfDocument.documentLink包含Servlet的路径,它通常使用内容处理并将结果流式传输到浏览器。