基本上我想做的是: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());
}
任何建议都会有很大帮助,现在已经为此苦苦挣扎了一段时间。