Search code examples
spring-mvcspring-bootjasper-reports

JasperReportsViewResolver add .html after some time


I am facing a weird problem , i did install httpd as reverse proxy infront of tomcat and then start to face the below problem

org.springframework.context.ApplicationContextException: Could not load JasperReports report from class path resource [static/jasper/rpt_delivery.html.jrxml]; nested exc
eption is java.io.FileNotFoundException: class path resource [static/jasper/rpt_delivery.html.jrxml] cannot be opened because it does not exist
        at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.loadReport(AbstractJasperReportsView.java:529)

if i do a restart for tomcat , every thing work perfectly but after like 10 min i start getting the above error , the issue is the resource should be resolved as /statc/jasper/rpt_delivery.jrxml , i don't know from where html is coming, the code was running OK from around a year .

    @Bean
    public JasperReportsViewResolver getJasperReportsViewResolver() {
      JasperReportsViewResolver resolver = new JasperReportsViewResolver();
      resolver.setPrefix("classpath:/static/jasper/");
      resolver.setSuffix(".jrxml");
      resolver.setReportDataKey("datasource");
      resolver.setViewNames("rpt_*");
      resolver.setViewClass(JasperReportsMultiFormatView.class);
      resolver.setOrder(0);
      return resolver;
    }  

    @Bean
    public ClassLoaderTemplateResolver templateResolver() {
        ClassLoaderTemplateResolver result = new ClassLoaderTemplateResolver();
        result.setPrefix("templates/");
        result.setSuffix(".html");
        result.setTemplateMode("HTML5");
        result.setCacheable(properties.isCache());
        result.setOrder(1);
        return result;
    }

Solution

  • As my comment above did help others i am posting it as an answer to the question

    Adding produces = "application/pdf;charset=UTF-8" did the trick and now it is working nice