2017-12-12 4 views
0

次のJSFダウンロード方法があります。すべて正常に動作します::ダウンロードボックスが表示され、ファイルが選択されたディレクトリにダウンロードされた後、ページ上のカーソルは応答を待っているかのようにビジー状態を続けます。そのため、私はページ上のどの要素もクリックできません。JSFファイルのダウンロード - レスポンスを待つときにカーソルがビジー状態になる

public void download()throwsIOException{ 
    FacesContext con = FacesContext.getCurrentInstance(); 
    ExternalContext ex = con.getExternalContext(); 
    File file = new File(DIRECTORY_PATH_HERE + FILENAME_BERE); 

    ex.responseReset(); 
    ex.setResponseContentType("application/octet-stream"); 

    try { 
     ex.setResponseContentLength((int)file.length()); 
    } catch (IOException e) { 
     e.printStackTrace();  
    } 

    ex.setResponseHeader("Content-Disposition", "attachment; filename=\"" + FILE_NAME + "\""); 


    final HttpServletResponse res = (HttpServletResponse)excon.getResponse(); 
    ServletOutputStream out = res.getOutputStream(); 

    FileInputStream fs = new FileInputStream(file); 
    byte[] buf = new byte[ifs.available()]; 
    int i = 0; 

    while((i = fs.read(buf)) != -1){ 
     out.write(buf); 
    } 


    out.flush(); 
    out.close(); 
    fs.close(); 
    fc.responseComplete(); 
} 

助けてください。ありがとうございました。

+0

ようなものになるだろう、あなたの人生が容易になりますあなたもJSF一部を投稿することができます – Karim

答えて

1

あなたはJSFを使用している場合、私は非常には、ユーティリティライブラリのomnifacesを含めることをお勧めします、それはあなたの例では、この

public void download() throws IOException { 
    Faces.sendFile(file, true); 
} 
関連する問題