Tento una apliación en JSF 2 que cuando le doy un boton se crea un pdf. Estoy intentando que dicho pdf se descargue y se abra en una nueva pestaña del navegador pero lo que sucede es que durante la ejecución del código no existe ningún problema, pero en vez de abrir dicho pdf, el navegador se queda "pensando"
El código del botón de la pagina es el siguiente
Código HTML:
<h:commandLink value="PDF" target="_blank"
action="#{generarPDF}" />
Y el código del metodo es el siguiente
Código HTML:
File file = new File(ruta, nombre); FacesContext facesContext = FacesContext.getCurrentInstance(); ExternalContext externalContext = facesContext.getExternalContext(); HttpServletResponse response = (HttpServletResponse) externalContext.getResponse(); BufferedInputStream input = null; BufferedOutputStream output = null; try { // Open file. input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE); // Init servlet response. response.reset(); response.setHeader("Content-Type", "application/pdf"); response.setHeader("Cache-Control", "no-cache"); response.setHeader("Content-Length", String.valueOf(file.length())); response.setHeader("Content-Disposition", "inline; filename=\"Proyecto_1.pdf\""); output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE); // Write file contents to response. byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; int length; while ((length = input.read(buffer)) > 0) { output.write(buffer, 0, length); } // Finalize task. output.flush(); }finally{ output.close(); input.close(); } facesContext.responseComplete();
Gracias y un saludo