[b]Galera tenho esse servlet para gerar relatorio em xls, mas quanto chamo ele dá um erro ao gerar o relatorio(chama o tratamento de excessão) dizendo que o relatorio é null.Porem não consigo ver aonde está o erro na geração do relatorio.
Se puderem me ajudar valeu!![/b]
public class ServletXls extends HttpServlet {
@In(create = true)
FuncionarioList funcionarioList;
String reportUrl="/WEB-INF/relatoriosJasper/Relatorio_Funcionarios.jasper";
protected void doPost(HttpServletRequest req, HttpServletResponse response)
throws ServletException, IOException {
Map parametros = new HashMap();
try {
// JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(funcionarioList.getResultList());
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
JasperReport reportUrlReal = (JasperReport)JRLoader.loadObject(request.getRealPath(reportUrl));
JasperPrint jasperPrint = JasperFillManager. fillReport(reportUrlReal, parametros);
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream output = new ByteArrayOutputStream();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, output);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.exportReport();
byte[] bytes = output.toByteArray();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","attachment; filename=file.xls");
response.setContentLength(bytes.length);
output.close();
OutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (Exception e) {
response.getWriter().println("Erro ao gerar o relatório: " + e.getMessage());
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
doPost(arg0, arg1);
}
}
Desculpem galera mas essa parte não está comentada rsrs
jgbt
Março 26, 2008, 12:37pm
#3
coloca o stackTrace p/ podermos ver o erro.
[]´s
3:44:11,531 ERROR [STDERR] java.lang.NullPointerException
13:44:11,532 ERROR [STDERR] at RelatoriosEJB.ServletXls.doPost(ServletXls.java:48)
13:44:11,532 ERROR [STDERR] at RelatoriosEJB.ServletXls.doGet(ServletXls.java:83)
13:44:11,532 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
13:44:11,532 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
13:44:11,532 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
13:44:11,532 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
13:44:11,532 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
13:44:11,532 ERROR [STDERR] at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
13:44:11,533 ERROR [STDERR] at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
13:44:11,533 ERROR [STDERR] at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
13:44:11,533 ERROR [STDERR] at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
13:44:11,534 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
13:44:11,534 ERROR [STDERR] at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
13:44:11,534 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
13:44:11,534 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
13:44:11,534 ERROR [STDERR] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
13:44:11,534 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
13:44:11,535 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
13:44:11,535 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
13:44:11,535 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
13:44:11,535 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
13:44:11,535 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
13:44:11,535 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
13:44:11,535 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
13:44:11,535 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
13:44:11,535 ERROR [STDERR] at java.lang.Thread.run(Thread.java:619)
Parece que está reclamando dessa linha de comando:
Alguem teria idea do que seja ?
fre_d
Março 29, 2008, 3:58pm
#7
O método doPost já recebe o request como parametro para que você quer pegar o requesto do faces ?
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Já tentou usar algo do tipo.
Thread.currentThread().getContextClassLoader().getResource(......)