Visualizar relatório no jsf

0 respostas
Andresilva_Bh

Pessoal tenho esse código para visualizar o pdf na pagina, mas esta salvando em formato html, o que pode estar de errado?

Aqui ele lista os dados e retornando do banco:

public List<Relatoriopedido> getConsullistidpedido() {
        try {
            //Nova conexão e Statement
            relatoriopedidodao = new Relatoriopedidodao();
            consullistidpedido = relatoriopedidodao.consulidpedido(relatoriopedido, pedido);
            return consullistidpedido;
        } catch (Exception e) {
            // Menssagem
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("ATENÇÃO", "OCORREU UM ERRO, TENTE NOVAMENTE!"));
            //
            return null;
        }
    }

// Visualizando relatório pegando o retorno do código acima

public void visualizarrelatoriopedido(ActionEvent actionEvent) throws JRException, IOException {
    // Pegando o idpedido(object) e enviando como parametro para IReport(String)
    Map<String,Object> parametros = new HashMap<String, Object>();
    parametros.put("consulidpedido", this.pedido.getIdpedido());
    //passando o arquivo e convertendo para o JasperReport
    File jasper = new File(FacesContext.getCurrentInstance().getExternalContext().getRealPath("caminho do relatório"));
    
    byte[] bytes = JasperRunManager.runReportToPdf(jasper.getPath(),parametros, new JRBeanCollectionDataSource(this.getConsullistidpedido()));
    HttpServletResponse httpservletresponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    httpservletresponse.setContentType("aplication/pdf");
    httpservletresponse.setContentLength(bytes.length);
    ServletOutputStream stream = httpservletresponse.getOutputStream();
    stream.write(bytes,0,bytes.length);
    stream.flush();
    stream.close();        
    FacesContext.getCurrentInstance().responseComplete();
}
Criado 2 de junho de 2016
Respostas 0
Participantes 1