Exibindo relatório a partir de Manager Bean em JSF

0 respostas
C

Oi pessoal.

Eu sou novo por aqui… preciso da ajuda da comunidade.

Estou gerando um relatorio a partir de .jasper em minha aplicação Web, estou trabalhando com JSF no netbeans.

O meu problema é que não consigo exibir o relatório em outra página.

A minha página JSP esta chamando o método gerarHistorico.

Abaixo estou colocando o meu Manager Bean.

public class ActionRelatorio{
    
    private static Connection con = null;
    private static String driver = "com.mysql.jdbc.Driver";
    private static String endereco = "jdbc:mysql://localhost/sim";
    private static String user = "root";
    private static String pass = "root";
    
    //Lista de paciente a ser exibida
    private ListDataModel listaParturiente;
    //Nome para consulta
    private String nomeConsulta;
    //Objeto do tipo PacienteFacade para realizar trasação de salvar atualizar etc
    ParturienteDAO pacDAO;
    
    private java.util.Date dt_inicial;
    private java.util.Date dt_final;
    
    /**
     * <p>Prefixo do nome do recurso para relatórios compilados.</p>
     */
    //private static final String PREFIX = "/WebSim/WEB-INF/classes/org/maternidade/relatorios/";
    private static final String SUB = "C:/Application of Developed/IDEs/netbeans-5.5.1/workspace/WebSim/src/java/org/maternidade/relatorios/";
    
    /**
     * <p>Sufixo do nome do recurso para relatórios compilados.</p>
     */
    private static final String SUFFIX = ".jasper";
    
        
    /** Creates a new instance of ActionReport */
    public ActionRelatorio() {
        
        this.pacDAO = new ParturienteDAO();
        this.setNomeConsulta(null);
        this.setListaParturiente(null);
        
    }
    
    
    public String gerarHistorico(){
        
        if(listaParturiente != null){
            Parturiente part = (Parturiente)getListaParturiente().getRowData();
            
            Map<String,Object> params = new HashMap<String,Object>();
            params.put("idParturiente",part.getIdPac());
            
            try{
                
                conexao();
                jasperReport("historicoParturiente",params);
                
                
            }catch(Exception e){
                
                System.out.println(e.getMessage());
            }
        }
        return null;
        
        
    }
    
    public void gerarRelatorioParto(){
        
        Map<String,Object> params = new HashMap<String,Object>();
        params.put("data_inicio",getDt_inicial());
        params.put("data_fim",getDt_final());
        
        try{
            
            conexao();
            jasperReport("partoRelatorio",params);
            
            
        }catch(Exception e){
            
            System.err.println(e.getMessage());
            
        }
        
    }
    
    public void jasperReport(String nome, Map params){
                        
        try {
            
            byte[] pdf = JasperRunManager.runReportToPdf(SUB+nome+SUFFIX, params, con);
            
            FacesContext faces = FacesContext.getCurrentInstance();
            HttpServletResponse response = (HttpServletResponse)faces.getExternalContext().getResponse();
            response.setContentType("application/pdf");
            response.setContentLength(pdf.length);
            response.setHeader("Content-disposition", "inline");
            
            response.setHeader("Cache-Control", "cache, must-revalidate");
            response.setHeader("Pragma", "public");
            ServletOutputStream out = response.getOutputStream();
            
            out.write(pdf);
            StateManager stateManager = (StateManager)faces.getApplication().getStateManager();
            stateManager.saveSerializedView(faces);
            
            faces.responseComplete();
            
        } catch (RuntimeException e) {
            
            throw e;
            
        } catch (Exception e) {
            
            System.out.println(e.getMessage());
            
            throw new FacesException(e);
            
        }
        
              
        try {
            
            con.close();
            
        } catch (SQLException ex) {
            
            System.out.println(ex.getMessage());
        }
        
    }
    
    //Cria a conexao
    public void conexao(){
        
        try{
            if (con == null || con.isClosed()){
                Class.forName(driver);
                con = DriverManager.getConnection(endereco,user,pass);
            }
            
        }catch(Exception e){
            System.err.println("Não foi possível conectar ao banco ->");
            System.err.println(e.getMessage());
        }
    }
    
    
    //Função para realizar busca de Parturiente
    public String pesquisarParturiente(){
        
        if(this.getNomeConsulta() == null || this.getNomeConsulta().length() == 0){
            
            return null;
            
        }else {
            
            //Lista de Parturiente.
            List<Parturiente> lista = pacDAO.buscarParturiente(getNomeConsulta());
            
            //Verifica se não foi encontrado parturiente.
            if(lista.size() == 0){
                
                System.out.println("Parturiente não encontrada. Verificar como mostrar um resposta na tela");
                return null;
            }
            
            //Seta a lista de parturiente encontrado.
            setListaParturiente(new ListDataModel(lista));
            
        }
        
        return null;
    }
}

Por favor me ajudem…irei deventer o este projeto no sábado.

Criado 10 de dezembro de 2007
Respostas 0
Participantes 1