从java bean下载文件只能运行一次

时间:2014-10-01 09:50:38

标签: java filesystems xpages xpages-ssjs

我有一个java bean,用于从服务器下载文件。

public void download(String filePath) throws IOException {

    try {
        String fn = new File(filePath).getName();
        byte[] data = grabFile(filePath);
        XspHttpServletResponse response = (XspHttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
        response.setContentType(URLConnection.guessContentTypeFromName(fn));
        response.setHeader("Content-disposition", "attachment; filename=" + fn);
        OutputStream output = response.getOutputStream();
        output.write(data);
        output.close();

    }catch(Exception e) {

    }finally {

        FacesContext.getCurrentInstance().responseComplete(); 
    }
}

我可以使用以下SSJS代码从我的xpage上的链接调用此bean,我在链接中使用完全刷新。

var dw = new FileShare();
dw.download("c:\test\filename.docx")

代码工作正常,当我点击链接时,文件从服务器上下载,但它只在第一次工作。如果我使用浏览器刷新按钮重新加载整个页面,我可以下载另一个文件。

如何修复此代码,以便我可以点击从xpage上的所有链接下载而无需重新加载浏览器。

1 个答案:

答案 0 :(得分:2)

您必须在链接中使用XSP.allowSubmit()。

检查Per Henrik Lausten回答here (经过验证的人)了解更多详情

雷诺