Estou tendo problemas na geração de relatórios utilizando Vraptor e Ireport. Na verdade estou no método de tentativa e erro, pois efetuando busca na net não consegui encontrar material o qual eu pudesse utilizar para me basear. Bom para explicar melhor segue abaixo os arquivos que montei para tentar gerar o relatório:
geraRel.jsp<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<html>
<head>
<script type="text/javascript" src="${dir}/js/relatorio_produto.js"></script>
<head>
<body>
<form id="frmRel_Produto" title="Produto" type="rel" >
<input type="text" name="relatorioproduto.produtoid" id="relatorioproduto.produtoid" value="${relatorioproduto.produtoid}" />
<input type="button" style="cursor: pointer;" value="Gerar Relatorio" title="Gerar Relatorio" onclick="gera_rel_produto();" />
</UI:line>
<form>
</body>
</html>
function gera_rel_produto(){
document.getElementById("frmRel_Produto").action = dir+"/relatorioproduto.doGeraRelatorio.do";
document.getElementById("frmRel_Produto").submit();
}
public class RelatorioProdutoAction {
HttpServletRequest request;
HttpServletResponse response;
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(final HttpServletRequest request) {
this.request = request;
}
public void setResponse(final HttpServletResponse response) {
this.response = response;
}
public HttpServletResponse getResponse() {
return response;
}
public RelatorioProdutoAction(ServletContext context) {
super(context);
}
@Valid
@Parameter(create=true)
@Out
private RelatorioProduto relatorioproduto;
private Connection getConnection(){
Connection connection=null;
try {
//cria a conexão com o banco de dados
Class.forName("com.mysql.jdbc.Driver");
String db = "jdbc:mysql://localhost:3306/relatorios?user=root&password=";
connection = DriverManager.getConnection(db);
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return connection;
}
@Override
public void doNew() {
}
public void doGeraRelatorio() {
try {
String caminho = "/WEB-INF/relatorios/";
String relatorio = caminho+"Relatorio_Internacionalizado.jrxml";
try {
Connection connection = getConnection();
HashMap parameters = new HashMap();
parameters.put("produtoid", relatorioproduto.getProdutoid());
//parameters.put("Data", data);
JasperReport jasperReport = JasperCompileManager.compileReport(relatorio);
byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, parameters, connection);
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "filename=Relatorio.pdf");
ServletOutputStream ouputStream = response.getOutputStream();
response.setContentLength(bytes.length);
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
if(connection!=null)connection.close();
} catch (SQLException ex) {
Logger.getLogger("global").log(Level.SEVERE, null, ex);
}
catch (JRException e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain");
response.getOutputStream().print(stringWriter.toString());
}
}catch (IOException e1) {
e1.printStackTrace();
}
}
}
#Relatorio Produto
relatorioproduto.doNew.ok = jsp/relatorioproduto/geraRel.jsp
SEVERE: Servlet.service() for servlet vraptor2 threw exception java.lang.NullPointerException at br.com.douglas.action.RelatorioProdutoAction.doGeraRelatorio(RelatorioProdutoAction.java:120) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:61) at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:32) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:130) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:57) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47) at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72) at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97) at org.vraptor.core.DefaultController.execute(DefaultController.java:46) at org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44) at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)Observei que o erro ocorre na linha: JasperReport jasperReport = JasperCompileManager.compileReport(relatorio); Mas não consegui identificar o problema.
agradeço se alguém puder me dar uma dica do que pode estar acontecendo, ou se alguém tiver algum material ou tutorial que possa me ajudar na geração de relatório utilizando Ireport e Vraptor.