spring-mvc - Jasper 报告 Spring : Chart is not being displayed when report exported as HTML

标签 spring-mvc jasper-reports

使用 Jsperreports 6.1.0 依赖项开发了一个简单的 Spring Maven Web 应用程序。创建了一个包含静态文本和图表的 Jasper 报告。以 PDF 格式导出报告时,报告可以正确打印静态文本和图表,但以 HTML 格式导出时,仅显示静态文本而不显示图表。

在网上搜索后发现需要ImageServlet和一些参数来导出HTML格式的报告。

在 web.xml 中添加了 ImageServlet 映射

通过 WebHtmlResourceHandler 设置图片 URI。

仍然报告不显示图表。有什么问题?

这是我的 Spring Controller 代码,用于以 HTML 格式导出报告。

List<BeanAuthorBooks> beanList = new ArrayList<BeanAuthorBooks>();
        beanList.add(new BeanAuthorBooks("APJ Kalam",10));
        beanList.add(new BeanAuthorBooks("Robin  Shamra",5));
        beanList.add(new BeanAuthorBooks("Rashmi Bansal",8));
        beanList.add(new BeanAuthorBooks("Dr. B.R.Ambedkar",60));
        beanList.add(new BeanAuthorBooks("Mahatma Gandhi",15));

        Map<String,Object> params = new HashMap();
        JasperReport jasperReport = JasperCompileManager.compileReport(this.getClass().getResourceAsStream("testreport.jrxml"));
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JRBeanCollectionDataSource(beanList,false));

        HtmlExporter exporter = new HtmlExporter();
        List<JasperPrint> jasperPrintsList = new ArrayList<JasperPrint>();
        jasperPrintsList.add(jasperPrint);
        exporter.setExporterInput(SimpleExporterInput.getInstance(jasperPrintsList));
        //set ImageHandler. Hack for images export to HTML
        SimpleHtmlExporterOutput output = new SimpleHtmlExporterOutput(response.getWriter());
        WebHtmlResourceHandler webHtmlResourceHandler =  new WebHtmlResourceHandler("image?image={0}");
        output.setImageHandler(webHtmlResourceHandler);           
        exporter.setExporterOutput(output);            
        SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
        exporter.setConfiguration(configuration);
        exporter.exportReport();

这是我的 web.xml :

<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>

工作环境:Jasperreports 6.1.0、Spring 4.1.1、Eclipse Luna

注意:我在不同的论坛上发现许多链接都有相同的问题,但现在似乎已弃用提供的解决方案。

最佳答案

找到问题.....在这里发布解决方案....

实际上,我的 Controller 有请求映射为“/reports”,我导出报告的方法有请求映射“/html”,

因此最终请求在图表中显示图像变成类似“appname/reports/html/image?image=img_0_1”的内容。

但是 ImageServlet 被映射到 URL“/image”所以更新我的代码如下:

在 web.xml 中

<servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/reports/image</url-pattern>

并在 Controller 中将我的网址更新为......

WebHtmlResourceHandler webHtmlResourceHandler =  new WebHtmlResourceHandler("../image?image={0}");

关于spring-mvc - Jasper 报告 Spring : Chart is not being displayed when report exported as HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571512/

相关文章:

jasper-reports - 如何控制JasperReports中的行数

JQuery Full Calendar with Spring MVC ..无法调用 Controller 来获取JSON对象

java - servlet jsp 的严重 : Servlet. service() 抛出异常 java.lang.LinkageError:加载器约束冲突

java - 实例化 servlet 类 org.springframework.web.servlet.Dispatcherservlet 时出错

variables - JasperReports 计数器变量总是递增

jasper-reports - 如何在 Jasper/iReport 中创建多页 PDF 报告?

java - Spring Security 禁用默认登录页面

java - 通过Java配置运行Spring MVC的问题

Java JasperReports条码打印

glassfish - JasperReports 编译报告