Commandlink不会开始下载使用XDocReport生成的文件

时间:2016-02-16 11:08:55

标签: jsf download xdocreport

我在当前项目中遇到了这个问题,使用XDocReport从数据库生成不同的文件。现在是尝试失败的日子。

这是交易:我的bean有一个downloadPptx方法,用于生成并开始下载某些数据的pptx报告。我从commandlink调用它,我想在我点击它时应该开始下载,但实际上没有。

我跟踪了BalusC的几个指南,包括this onethis other one,但从未让它开始下载。不过,这个方法是在点击时调用的,因为我显示了一些日志。

以下是我的代码摘录:

public void downloadPptx() {

    IXDocReport doc = null;
    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext ec = fc.getExternalContext();
    int idRef = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("ref"));
    String fileName = idRef+".pptx";

    try {

        // [...] Generating document with XDocReport

        ec.responseReset(); 
        ec.setResponseContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation");
        ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); 

        doc.process(context, ec.getResponseOutputStream());

        fc.responseComplete(); 

    } catch (XDocReportException e) {
        log.debug(e.getMessage());
    } catch (IOException e) {
        log.debug(e.getMessage());
    }


}

这是我的bean的方法(有点清理不完整的东西),这是我的页面的摘录:

<p:commandLink action="#{viewRef.downloadPptx}" immediate="true">
    <p:graphicImage url="ressources/img/ppt.png" />
    <f:param name="ref" value="#{viewRef.reference.idRef}"/>
</p:commandLink>

我尝试了几个方面,从使用缓冲区到传输,再到在网页中使用ajax,但似乎没有任何工作,我必须丢失或误解我想的东西。 我还尝试生成一个text/plain文件,但它没有改变任何内容。

0 个答案:

没有答案