无法在JSF中下载动态生成的Excel电子表格

时间:2018-09-26 09:06:30

标签: jsf jsf-2 download

我正在尝试下载由Apache POI制作的动态创建的Excel电子表格。在JSF中,我使用的是PrimeFaces,但是由于某些原因,我无法使其与他们的FileDownload方法一起使用。我已经尝试了其他一些方法,但是似乎没有任何效果。

这是我目前的整个方法:

public void generateExcel() throws IOException, InvalidFormatException {

    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext ec = fc.getExternalContext();
    HttpServletResponse response = (HttpServletResponse) ec.getResponse();

    response.reset();
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + "Spreadsheet.xls" + "\"");
    OutputStream output = response.getOutputStream();

    Workbook excelTabela = new HSSFWorkbook();

    //Building the xls content here.

    excelTabela.write(output);
    excelTabela.close();

    fc.responseComplete();
    output.flush();
    output.close();
}

它贯穿了这段代码(我检查了打印语句),但是什么都没有发生。

这是我用于运行此方法的按钮:

<h:form>
    <p:remoteCommand name="gen" actionListener="#{PrevoziGeneratorBean.generateExcel}" />
    <h:commandButton type="button" onclick="gen()" value="Execute" />
</h:form>

我根据this question的答案编写了这段代码,但无法正常工作。

0 个答案:

没有答案