Jsf + relatório?

3 respostas
juniorsatanas

Pessoal aonde tem um tutorial ou livro sobre jsf + ireport + jaspion report ?

Testei desta maneira:
http://javafree.uol.com.br/artigo/870555/RelatorioHibernate-Annotations-+-JSF-+-iReport

mas nao deu certo !

to fazendo assim:

:

package b.gov.nutec.relatorios;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;

public class GerarRelatorio_pessoa extends HttpServlet {
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
                RelConexao rc = new RelConexao();
                rc.conexaorel(); // Faz a conexo
                
                String pathJasper = getServletContext().getRealPath("/relatorios") + "/";
               
                String path = getServletContext().getRealPath("/");
                // Parametros do relatorio

                Map parametros = new HashMap();
                
                parametros.put("", pathJasper + "Relatorio_Pessoa.jasper");

                try {
                    // Aqui ele cria o relatrio
                    JasperPrint impressao = JasperFillManager.fillReport(
                    pathJasper + "Relatorio_Pessoa.jasper", parametros, RelConexao.con);
                    // Grava o relatrio em disco em pdf
                    JasperManager.printReportToPdfFile(impressao, path + "Relatorio_Pessoa.pdf");
                    // Redireciona para o pdf gerado
                    response.sendRedirect("Relatorio_Pessoa.pdf");
                } catch (Exception e) {
                    response.getWriter().println("Erro ao gerar o relatório: " + e);
                    System.out.print("Erro ao gerar o relatório: " + e);
                }
            } catch (Exception e) {
                System.out.println("Erro: " + e);
            }
        }
}
package b.gov.nutec.relatorios;
import java.sql.*;

class RelConexao {

    public static Connection con;
    public void conexaorel() {
		try {
			if (con == null || con.isClosed()) {
				Class.forName("org.postgresql.Driver");

				con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/bdcadastro", "root","debian23");
			}
		} catch (Exception e) {
			System.out.println("não foi possível conectar ao banco");
			e.printStackTrace();
		}
	}


}
package b.gov.nutec.relatorios;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;


public class Rel_Matr_Pessoa extends HttpServlet {
   
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
                RelConexao rc = new RelConexao();
                rc.conexaorel(); // Faz a conexo

               
                String pathJasper = getServletContext().getRealPath("/relatorios") + "/";
             
                String path = getServletContext().getRealPath("/");
                // Parametros do relatorio

                Map parametros = new HashMap();
               
                parametros.put("", pathJasper + "Relatorio_mesal_matri.jasper");

                try {
                    // Aqui ele cria o relatrio
                    JasperPrint impressao = JasperFillManager.fillReport(
                            pathJasper + "Relatorio_mesal_matri.jasper", parametros, RelConexao.con);
                    // Grava o relatrio em disco em pdf
                    JasperManager.printReportToPdfFile(impressao, path + "Relatorio_Matricula_e_Pessoas.pdf");
                    // Redireciona para o pdf gerado
                    response.sendRedirect("Relatorio_Matricula_e_Pessoas.pdf");
                } catch (Exception e) {
                    response.getWriter().println("Erro ao gerar o relatório: " + e);
                    System.out.print("Erro ao gerar o relatório: " + e);
                }
            } catch (Exception e) {
                System.out.println("Erro: " + e);
            }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
package b.gov.nutec.relatorios;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;


public class Rel_Pessoa_nome extends HttpServlet {
   
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
                RelConexao rc = new RelConexao();
                rc.conexaorel(); // Faz a conexo
               
                String pathJasper = getServletContext().getRealPath("/relatorios") + "/";
               
                String path = getServletContext().getRealPath("/");
                // Parametros do relatorio

                Map parametros = new HashMap();
                
                parametros.put("", pathJasper + "Relatorio_Pessoa_por_nome.jasper.jasper");
                parametros.put("nome", "");

                try {
                    // Aqui ele cria o relatrio
                    JasperPrint impressao = JasperFillManager.fillReport(
                    pathJasper + "Relatorio_Pessoa por nome.jasper", parametros, RelConexao.con);
                    // Grava o relatrio em disco em pdf
                    JasperManager.printReportToPdfFile(impressao, path + "Relatorio_Pessoa_por_nome.pdf");
                    // Redireciona para o pdf gerado
                    response.sendRedirect("Relatorio_Pessoa_por_nome.pdf");
                } catch (Exception e) {
                    response.getWriter().println("Erro ao gerar o relatório: " + e);
                    System.out.print("Erro ao gerar o relatório: " + e);
                }
            } catch (Exception e) {
                System.out.println("Erro: " + e);
            }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
<rich:tab label="Relatórios">
                    <form action="Rel_Matr_Pessoa">
                        <input type="submit" value="Rel_Matr_Pessoa" name="Gerar Relatório Matrícula"/>
                    </form>
                    <form action="GerarRelatorio_pessoa">
                        <input type="submit" value="GerarRelatórioPessoa" name="Gerar Relatório Pessoa"/>
                    </form>
                    <form action="Rel_Pessoa_nome">
                        <input type="submit" value="Rel_Pessoa_nome" name="Gerar Relatório Pessoa po nome"/>
                    </form>

                    |<a4j:commandButton value="Relatorio Pessoas Matrícula" immediate="true" action="case1" styleClass="botoes"/>|

                </rich:tab>

erro:

HTTP Status 404 - /pages/Rel_Matr_Pessoa

type Status report

message /pages/Rel_Matr_Pessoa

description The requested resource (/pages/Rel_Matr_Pessoa) is not available.
Apache Tomcat/6.0.20

como se faz ?

3 Respostas

thiagocg

Olá juniorsatanas, eu costumo fazer o seguinte, no meu managedBean eu crio a coleção de objetos que irei passar para o relatorio do jasper, com esta coleção eu crio um JRBeanCollectionDataSource que são os dados passados como objeto para o relatorio, então eu gero o pdf e exibo em uma nova pagina.

Ex:
Map parametros = new HashMap();
parametros.put("seuParametro", valorDoSeuParametro);
			
List<SuaClasse> listRelatorio = metodoQueRetornaSeusDadosDoRelatorio();
			
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
InputStream reportStream = context.getExternalContext().getResourceAsStream("/relatorios/seuRelatorio.jasper");
ServletOutputStream servletOutputStream = response.getOutputStream();
			
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listRelatorio);

JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, ds);
			
response.setContentType("application/pdf");
context.responseComplete();
servletOutputStream.flush();
servletOutputStream.close();

Lembrando que a pasta "/relatorios/" está na raiz do meu WebContent.

E na declaração do form no jsp eu seto a tag para que o relatório seja exibido em outra pagina:
target="_blank"
Qualquer coisa, estamos ai!

[]'s

UMC

Eu trabalho dessa forma e não tenho problemas!

As Servlets então mapeadas?

vlw

juniorsatanas

thiagocg

Boa tarde tudo bom ?

Poderia postar todo o código !
Criado 22 de abril de 2010
Ultima resposta 22 de abr. de 2010
Respostas 3
Participantes 3