Pobieranie pliku CSV za pomocą JSF

Nie wiem, jak pobrać plik CSV. CSV zostanie wygenerowany w czasie wykonywania. Czy muszę najpierw zapisać plik w katalogu WEB-INF tomcat? Używam JSF 1.2.

Przy okazji, jaki jest preferowany komponent JSF dla tego rodzaju zadań?

Edytuj (05.05.2012 - 15:53)

Spróbowałem rozwiązaniaBalusC stwierdził w swoim pierwszympołączyć, ale jeśli kliknę na przycisk polecenia, zawartość pliku zostanie wyświetlona na stronie internetowej. Może jest problem zmimetype?

plik xhtml:

<code><a4j:form>
    <a4j:commandButton action="#{surveyEvaluationBean.doDataExport}" value="#{msg.srvExportButton}" />
</a4j:form>
</code>

główna fasola:

<code>    public String doDataExport() {

    try {
        export.downloadFile();  
    } catch (SurveyException e) {
        hasErrors = true;
    }
    return "";
}
</code>

fasola eksportowa:

<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>

Edytuj (05.05.2012 - 16:27)

Rozwiązałem mój problem. Muszę użyć<h:commandButton> zamiast<a4j:commandButton> a teraz to działa!

questionAnswers(2)

yourAnswerToTheQuestion