Загрузка файла CSV с использованием JSF
Я не знаю, как загрузить файл CSV. CSV будет сгенерирован во время выполнения. Нужно ли сначала сохранять файл в каталоге WEB-INF tomcat? Я использую JSF 1.2.
Кстати, какой компонент JSF является предпочтительным для выполнения задач такого рода?
Изменить (05.05.2012 - 15:53)
Я попробовал решениеBalusC
заявил в своем первомссылка на сайт, но если я нажму на кнопку command, содержимое файла отобразится на веб-странице. Может быть, проблема сmimetype
?
XHTML-файл:
<code><a4j:form> <a4j:commandButton action="#{surveyEvaluationBean.doDataExport}" value="#{msg.srvExportButton}" /> </a4j:form> </code>
основной боб:
<code> public String doDataExport() { try { export.downloadFile(); } catch (SurveyException e) { hasErrors = true; } return ""; } </code>
экспорт фасоли:
<code>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<String> strings = new ArrayList<String>(); 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"); } } </code>
Изменить (05.05.2012 - 16:27)
Я решил свою проблему. Я должен использовать<h:commandButton>
вместо<a4j:commandButton>
и теперь это работает!