开发了一个简单的Spring应用程序,该应用程序具有Jsperreports 6.1.0依赖项。创建了一个有静态文本和图表的Jasper报告。当以PDF格式导出报表时,报表将与静态文本和图表一起正确打印,但当导出为HTML格式时,只显示静态文本而不显示图表。
在互联网上搜索后,发现用ImageServlet格式导出报表所需的参数较少,且所需的参数较少。
在ImageServlet中添加web.xml映射
通过WebHtmlResourceHandler设置图像URI。
仍然没有报告显示图表。有什么问题吗?
这里是我的代码,用于导出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,Spring4.1.1,Eclipse露娜
注意:我在不同的论坛上发现了许多有相同问题的链接,但如果有解决方案,现在似乎不推荐.
发布于 2015-06-03 11:46:31
在这里找到了problem.....POsting解决方案..。
实际上,我的Controller的请求映射为"/reports“,而我导出报表的方法有请求映射"/html",
因此,在图表中显示图像的最终请求变成了类似于“appname/reports/html/ image ?image=img_1”之类的东西。
但是ImageServlet被映射为URL "/image“,因此更新了我的代码如下:
在web.xml中
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/reports/image</url-pattern>
调度员更新了我的网址.
WebHtmlResourceHandler webHtmlResourceHandler = new WebHtmlResourceHandler("../image?image={0}");
https://stackoverflow.com/questions/30571512
复制相似问题