Chamar relatório iReport

8 respostas
Luciano_Lopes

Pessoal, vi aqui no forum vários exemplos para fazer chama de um relatório numa pagina jsf mas nenhum funcionou comigo, alguns usavam servlets outros não, alguem pode postar um código simples que chame o relatório?

8 Respostas

Hebert_Coelho

Vc tb poderia postar o código que vc tentou fazer e não funcionou para o pessoal te ajudar.
E coloca a mensagem de erro também. [=

davidbuzatto

http://davidbuzatto.com.br/category/programacao/java/relatorios-java/

Luciano_Lopes

To fazendo assim:

protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { Conexao conexao = (Conexao) new Conexao().getConn(); ServletContext sc = getServletContext(); JasperPrint jp = JasperFillManager.fillReport(sc.getRealPath("/relatorios/produtos.jasper"), null, conexao);// essa linha ta grifada de vermelho JasperViewer jrv = new JasperViewer(jp); jrv.setVisible(true); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet VisualizaRelatorio</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet VisualizaRelatorio at " + request.getContextPath () + "</h1>"); out.println("</body>"); out.println("</html>"); } catch (Exception e) { e.printStackTrace(); } finally { out.close(); } }

andii.brunetta

Segue:

JasperReports 4.0.1: Conhecendo o iReport 4.0.1

JasperReports 4.0.1: Utilizando JavaBean datasource

JasperReports 4.0.1: JavaBean datasource - abrir relatório em projeto web

JasperReports 4.0.1: JavaBean datasource - abrir relatório em projeto desktop

JasperReports 4.0.1: Utilizando JDBC datasource

JasperReports 4.0.1: JDBC datasource - abrir relatório em projeto web

JasperReports 4.0.1: JDBC datasource - abrir relatório em projeto desktop

Luciano_Lopes

Estou seguindo os artigos que andii.brunetta postou(JDBC datasource), mas quando clico no botão pra exibir o relatório dera essa exceção aqui:

SEVERE: 'javax.el.PropertyNotFoundException' recebido ao invocar escuta de ação '#{relatorioProdutosBean.gerarRelatorio}' para o componente 'j_idt39' SEVERE: javax.el.PropertyNotFoundException: /acesso/index.xhtml @48,155 actionListener="#{relatorioProdutosBean.gerarRelatorio}": Target Unreachable, identifier 'relatorioProdutosBean' resolved to null at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) at javax.faces.component.UICommand.broadcast(UICommand.java:300) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at dao.LoginDAO.doFilter(LoginDAO.java:157) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:619)

Hebert_Coelho

Seu MB está null: identifier ‘relatorioProdutosBean’ resolved to null

Ou foi declarado de um modo e está sendo utilizado de outro ou nem foi declarado.

Luciano_Lopes

Meu Bean esta assim:

@Named
@RequestScoped
public class RelatorioProdutosBean {
    private RelatorioProdutosDAO dao;
 
    public void gerarRelatorio() {
        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
        ServletContext context = (ServletContext) externalContext.getContext();
        String arquivo = context.getRealPath("WEB-INF/relatorios/produtos.jasper");
 
        dao = new RelatorioProdutosDAO();
        JRDataSource jrRS = new JRResultSetDataSource(dao.produtosResultSet());
 
        gerarRelatorioWeb(jrRS, null, arquivo);
    }
 
    private void gerarRelatorioWeb(JRDataSource jrRS, Map<Object, Object> parametros, String arquivo) {
        ServletOutputStream servletOutputStream = null;
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
 
        try {
            servletOutputStream = response.getOutputStream();
            JasperRunManager.runReportToPdfStream(new FileInputStream(new File(arquivo)), response.getOutputStream(), parametros, jrRS);
            response.setContentType("application/pdf");
            servletOutputStream.flush();
            servletOutputStream.close();
            context.renderResponse();
            context.responseComplete();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Luciano_Lopes

Alguem sabe como resolver isso?

Criado 16 de dezembro de 2011
Ultima resposta 18 de dez. de 2011
Respostas 8
Participantes 4