いつもお世話になっております。
JSF2.2 (Facelets)を使用しています。
JSFでダウンロードする際に、以下のような処理で、ダウンロードそのものは
正常に行えることができました。
ダウンロード後、Webページにある他のボタンをクリックしても、
ManagedBean側の処理が呼び出されません。
これについて、解決策や、ヒントなどご存知ないでしょうか。
xml
1<h:commandButton value="ダウンロード" styleClass="btn" action="#{xBean.downloadAction()}"> 2</h:commandButton>
java
1//(中略) 2int lengthFile = data.length; 3ExternalContext ext = faces.getExternalContext(); 4try { 5 fileName = URLEncoder.encode(fileName, "UTF-8"); 6} catch (UnsupportedEncodingException e1) { 7 fileName = "file.xls"; 8} 9OutputStream outputstream = null; 10try { 11 ext.responseReset(); 12 ext.setResponseContentType("application/octet-stream; charset=UTF-8"); 13 ext.setResponseContentLength(lengthFile); // データサイズをセット 14 ext.setResponseHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); 15 outputstream = ext.getResponseOutputStream(); 16 outputstream.write(data); 17 outputstream.flush(); 18 ext.responseFlushBuffer(); 19} catch(IOException e) { 20 return false; 21} finally { 22 if(outputstream != null) { 23 try { 24 outputstream.close(); 25 } catch(IOException e) { 26 // do nothing 27 } 28 outputstream = null; 29 } 30} 31faces.responseComplete(); 32return true;
回答1件
あなたの回答
tips
プレビュー