首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jasperreports Spring :报表导出为HTML时没有显示图表

Jasperreports Spring :报表导出为HTML时没有显示图表
EN

Stack Overflow用户
提问于 2015-06-01 10:47:05
回答 1查看 682关注 0票数 3

开发了一个简单的Spring应用程序,该应用程序具有Jsperreports 6.1.0依赖项。创建了一个有静态文本和图表的Jasper报告。当以PDF格式导出报表时,报表将与静态文本和图表一起正确打印,但当导出为HTML格式时,只显示静态文本而不显示图表。

在互联网上搜索后,发现用ImageServlet格式导出报表所需的参数较少,且所需的参数较少。

在ImageServlet中添加web.xml映射

通过WebHtmlResourceHandler设置图像URI。

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

这里是我的代码,用于导出HTML格式的报表。

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<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,Spring4.1.1,Eclipse露娜

注意:我在不同的论坛上发现了许多有相同问题的链接,但如果有解决方案,现在似乎不推荐.

EN

回答 1

Stack Overflow用户

发布于 2015-06-03 11:46:31

在这里找到了problem.....POsting解决方案..。

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

因此,在图表中显示图像的最终请求变成了类似于“appname/reports/html/ image ?image=img_1”之类的东西。

但是ImageServlet被映射为URL "/image“,因此更新了我的代码如下:

在web.xml中

代码语言:javascript
运行
复制
<servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/reports/image</url-pattern>

调度员更新了我的网址.

代码语言:javascript
运行
复制
WebHtmlResourceHandler webHtmlResourceHandler =  new WebHtmlResourceHandler("../image?image={0}");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30571512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档