Apache POI を使用して、拡張子が .docx のドキュメントを生成しています。ヘッダー応答 (HttpServletResponse) にファイル名を設定しましたが、ブラウザーは URL の末尾に同じ名前のファイルを保存します。例:
私のブラウザの URL は localhost:8080/MyProject/mypage.jsf です。ダウンロードされたファイルの名前は mypage.jsf で、ヘッダーに設定された名前 (HttpServletResponse) は無視されます。docx のファイル拡張子を編集すれば、内容は問題ありません。
コードは次のとおりです。
private void generateDocument() throws IOException{
XWPFDocument document = new XWPFDocument();
//load document here
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
response.reset();
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
ServletOutputStream out = response.getOutputStream();
document.write(out);
response.setHeader("Content-Disposition",
"attachment; filename=my_document.docx");
facesContext.responseComplete();
}
Ps。Richfaces 4 を使用しています
ありがとう