Pessoal, como imprimir em PDF usando JasperReportsPdfView com spring?
não sei nem se estou no caminho correto, encontrei esse unico exemplo num video do youtube onde tinha o link do projeto, fico muito pertido tbm porque a maioria necessita ter o WEB-INF para configurar, mas estrutura do meu projeto spring nao utiliza esta pasta.
projeto de exemplo que usei; https://mega.nz/#!HQRGlQwI!Pm6THFAflbujX9VnZdiI444kB1HdzwIQSbAKzsHFDsk
video youtube;
https://www.youtube.com/watch?v=W2-xSapWA_U
@GetMapping(value = "/pdf")
public ModelAndView getPdf(@ModelAttribute Aluno aluno, Model model) {
model.addAttribute("alunu", aluno);
JasperReportsPdfView view = new JasperReportsPdfView();
view.setJdbcDataSource(dataSource);
view.setUrl("classpath:/jasper/relatorio_aluno_codigo.jasper");
view.setApplicationContext(appContext);
Map<String, Object> params = new HashMap<>();
return new ModelAndView(view);
}
No meu mvcConfig
@Bean
public JasperReportsViewResolver getJasperReportsViewResolver() {
JasperReportsViewResolver resolver = new JasperReportsViewResolver();
resolver.setPrefix("classpath:/static/jasper/");
resolver.setSuffix(".jasper");
resolver.setReportDataKey("datasource");
resolver.setViewNames("rpt_*");
resolver.setViewClass(JasperReportsMultiFormatView.class);
resolver.setOrder(0);
return resolver;
}
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/templates/academia/");
resolver.setSuffix(".html");
return resolver;
}
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/", "/resources/");
}
Exception
2017-05-01 11:29:07.112e[0;39m e[31mERRORe[0;39m e[35m5829e[0;39m e[2m—e[0;39m e[2m[nio-8080-exec-8]e[0;39m e[36mo.a.c.c.C.[.[.[/].[dispatcherServlet] e[0;39m e[2m:e[0;39m
Servlet.service()for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.context.ApplicationContextException: Could not load JasperReports report from class path resource [resources/jasper/relatorio_aluno_codigo.jasper]; nested exception is java.io.FileNotFoundException: class path resource [resources/jasper/relatorio_aluno_codigo.jasper] cannot be opened because it does not exist] with root cause
java.io.FileNotFoundException: class path resource [resources/jasper/relatorio_aluno_codigo.jasper] cannot be opened because it does not exist
atorg.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)~[spring-core-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.loadReport(AbstractJasperReportsView.java:502)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.loadReport(AbstractJasperReportsView.java:483)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.initApplicationContext(AbstractJasperReportsView.java:312)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:120)~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:76)~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:74)~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atcom.diftecnologia.academy.controller.AlunoController.getPdf(AlunoController.java:117)~[classes/:na]
atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)~[na:1.8.0_131]
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[na:1.8.0_131]
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)~[na:1.8.0_131]
atjava.lang.reflect.Method.invoke(Method.java:498)~[na:1.8.0_131]
atorg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220)~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134)~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:622)~[tomcat-embed-core-8.5.6.jar:8.5.6]
atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE]
atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)~[tomcat-embed-core-8.5.6.jar:8.5.6]
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)~[tomcat-embed-core-8.5.6.jar:8.5.6]
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)~[tomcat-embed-core-8.5.6.jar:8.5.6]
atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)~[tomcat-embed-websocket-8.5.6.jar:8.5.6]
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)~[tomcat-embed-core-8.5.6.jar:8.5.6]
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)~[spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE]
atorg.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)~[spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE]