1 - create a servlet to return the pdf
2 - using javascript open the new window with a <object/> element pointing
to the servlet


Walter Mourão
http://waltermourao.com.br
http://arcadian.com.br
http://oriens.com.br



2011/2/1 Ángel Miralles Arévalo <anmiral...@yahoo.es>

> Hey, I'm trying to open a pdf in a new window. Anyone with some experience?
>
> My jsp code is:
>
>  <h:commandLink value="" actionListener="#{docsProyectoVO.descargaDoc}"
> immediate="true">
>          <h:graphicImage url="#{rsc.btn_pdf}"  styleClass="border0"/>
>          <f:param value="#{documento.idProyecto}" name="idProyecto" />
>          <f:param value="#{documento.idDocumento}" name="idDocumento" />
>  </h:commandLink>
>
> The managed bean:
>
> public void descargaDoc (ActionEvent event){
>
>        try{
>            String idP = (String)
>
> getApplication().createValueBinding("#{param.idProyecto}").getValue(getFacesContext());
>
>            String idD = (String)
>
> getApplication().createValueBinding("#{param.idDocumento}").getValue(getFacesContext());
>
>
>            if (!this.lstDocumentos.isEmpty() && idP != null &&
> !idP.equalsIgnoreCase("")) {
>                // Obtenemos fichero de bbdd
>                DocumentoDTO d =
> getIProyectoSvc().obtenerDocumento(Long.parseLong(idD));
>
>
>                if (d != null) {
>                    generaDoc(d.getDatosDocumento(), d.getStrNombre(),
> d.getStrMime());
>                }
>            }
>        }catch(Exception e){
>            e.printStackTrace();
>        }
>    }
>
> public static void downloadFile(HttpServletResponse response, byte[] bytes,
> String fileName, String fileType, boolean attachment) throws IOException {
>        // Prepare stream.
>        BufferedOutputStream output = null;
>
>        try {
>            // Prepare.
>            int contentLength = bytes.length;
>            String disposition = "attachment";
>
>            // If content type is unknown, then set the default value.
>            // For all content types, see:
>            // http://www.w3schools.com/media/media_mimeref.asp
>            if (fileType == null) {
>                fileType = "application/octet-stream";
>            }
>
>            // Init servlet response.
>            response.setContentLength(contentLength);
>            response.setContentType(fileType);
>            response.setHeader("Content-disposition", disposition + ";
> filename=\"" + fileName + "\"");
>            //response.addHeader("Content-Disposition",
> "inline;filename="+fileName);
>            output = new BufferedOutputStream(response.getOutputStream());
>
>            output.write(bytes);
>
>            // Finalize task.
>            output.flush();
>        } finally {
>            // Gently close stream.
>            if (output != null) {
>                try {
>                    output.close();
>                } catch (IOException e) {
>                    e.printStackTrace();
>                    // This is a serious error. Do more than just printing a
>                    // trace.
>                }
>            }
>        }
>
> The first problem is h:commandLink without immediate='true' does't get de
> ActionListener. When immediate='true' a get the documet open at the same
> page...
> I am navigating.
>
> My configuration:
>
>        * jsf-facelets
>        * myfaces 3.2.2
>        * jboss 4.2
> Thanks for all.... ;)
>
>
>
>

Reply via email to