基本的に私がやりたいことはこれです: http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/
最後にそれをユーザーへのダウンロードとして提供することを除いて。明らかに、JSFを使用しているためFileWriterを使用できませんが、外部コンテキストから出力ストリームを取得し、出力ストリームを使用してバッファリングされたライターを作成することで、同様のことを試みました(以下のコード)。ログによると、これは行います最後まで完全に実行しますが、[名前を付けて保存] ダイアログがポップアップしません。私は JSF 2(MyFaces) と RichFaces 4.3 を使用しています。コンポーネントを使用してこれを行うより良い方法があれば教えてください。
externalContext.responseReset();
externalContext.setResponseHeader("Content-Disposition", "attachment; filename=test.csv");
externalContext.setResponseContentType("text/csv");
try {
OutputStream csvOut = externalContext.getResponseOutputStream();
BufferedWriter csvWriter = new BufferedWriter(new OutputStreamWriter(csvOut, "UTF-8"));
csvWriter.append("data,data,data,data");
csvWriter.flush();
csvWriter.close();
csvOut.close();
facesContext.responseComplete();
}catch(Exception ex){
System.out.println(ex.toString());
}
しばらくの間これに苦労してきましたが、どんな提案でも大いに役立ちます。