java jsf csv download

java - Descarga JSF CSV en frijol



download (1)

3 cosas saltan aquí

  1. Si no se responseComplete() a responseComplete() en FacesContext prácticamente significa que JSF continuará procesando la solicitud y no afectará el resultado.

  2. La llamada de reset() es innecesaria.

  3. El outputtream debe ser del tipo ServletOutputStream

    Pruebe el siguiente fragmento en su lugar

    try { //submitForm(); FacesContext fc = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse(); response.setContentType("text/csv"); fc.responseComplete(); //response.setContentLength(contentLength); response.setHeader ( "Content-disposition", "attachment; filename=/"Reporting-" + new Date().getTime() + ".csv/"" ); ServletOutputStream output = response.getOutputStream(); String s = "/"Project #/",/"Project Name/",/"Product Feature(s)/","; s+="/"Project Status/","; s+="/"Install Type/","; s+="/"Beta Test/",/"Beta Test New/Updated/","; s+="/"Production/",/"Production New/Updated/","; s+="/n"; InputStream is = new ByteArrayInputStream( s.getBytes("UTF-8") ); int nextChar; while ((nextChar = is.read()) != -1) { output.write(nextChar); } output.flush(); output.close(); } catch ( IOException e ) { // TODO Auto-generated catch block e.printStackTrace(); }

Además, puede llamar a sos.println(s) sin la necesidad de todo el trabajo que está haciendo allí

Estoy intentando hacer una descarga de csv de la misma manera que aquí: ¿Cómo proporcionar una descarga de archivos desde un bean de respaldo de JSF?

Mi respuesta sigue arrojando una nullPointerException en la línea output.write() . El bean es del alcance de la solicitud. ¿Alguna idea sobre el puntero nulo?

try { //submitForm(); FacesContext fc = FacesContext.getCurrentInstance(); HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse(); response.reset(); response.setContentType("text/csv"); //response.setContentLength(contentLength); response.setHeader ( "Content-disposition", "attachment; filename=/"Reporting-" + new Date().getTime() + ".csv/"" ); OutputStream output = response.getOutputStream(); String s = "/"Project #/",/"Project Name/",/"Product Feature(s)/","; s+="/"Project Status/","; s+="/"Install Type/","; s+="/"Beta Test/",/"Beta Test New/Updated/","; s+="/"Production/",/"Production New/Updated/","; s+="/n"; InputStream is = new ByteArrayInputStream( s.getBytes("UTF-8") ); int nextChar; while ((nextChar = is.read()) != -1) { output.write(nextChar); } output.close(); } catch ( IOException e ) { // TODO Auto-generated catch block e.printStackTrace(); }