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?
Chamar relatório iReport
8 Respostas
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. [=
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();
}
}
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
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)
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.
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();
}
}
Alguem sabe como resolver isso?