2014-10-01 70 views
0

我有一個java bean,用於從服務器上下載文件。從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上的所有鏈接下載而無需重新加載瀏覽器。

回答

2

您必須在鏈接中使用XSP.allowSubmit()。

檢查每亨利克Lausten回答here(一種有效)瞭解更多詳情

雷諾

+0

謝謝你,偉大工程 – 2014-10-01 12:47:43