Я не знаю, как скачать CSV-файл. CSV будет создан во время выполнения. Нужно ли сначала сохранить файл в каталоге tomcat WEB -INF? Я использую JSF 1.2.
Кстати, какой компонент JSF предпочтительнее для такого рода задач?
Редактировать (05.05.2012 -15 :53)
Я попробовал решение BalusC
, указанное в его первой ссылке , но если я нажму на свою команду CommandButton, содержимое файл отображается на веб-странице. Может проблема с mimetype
?
xhtml -файл:
основной компонент:
public String doDataExport() {
try {
export.downloadFile();
} catch (SurveyException e) {
hasErrors = true;
}
return "";
}
экспорт -компонент:
public void downloadFile() throws SurveyException {
try {
String filename = "analysis.csv";
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse();
response.reset();
response.setContentType("text/comma-separated-values");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
OutputStream output = response.getOutputStream();
// writing just sample data
List strings = new ArrayList();
strings.add("filename" + ";" + "description" + "\n");
strings.add(filename + ";" + "this is just a test" + "\n");
for (String s : strings) {
output.write(s.getBytes());
}
output.flush();
output.close();
fc.responseComplete();
} catch (IOException e) {
throw new SurveyException("an error occurred");
}
}
Изменить (05.05.2012 -16 :27)
Я решил свою проблему. Я должен использовать
вместо
, и теперь это работает!