使用JSF2和RichFaces导出到XLS

时间:2011-05-19 13:42:23

标签: java jsf-2 richfaces download

我有一个基于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或不。

2 个答案:

答案 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的路径,它通常使用内容处理并将结果流式传输到浏览器。