核心提示:在IE中,IFrame中的图片存在缓存机制! 怎么让Jasperreports生成的报表图片,不缓存呢?! 首先,通过firebug查看生成的报表图片代码: img alt= style=height: 310px; src=./servlets/image?image=img_0_0_9/ 当更改查询条件时,所生成的报表图片代码并没有
在IE中,IFrame中的图片存在缓存机制!
怎么让Jasperreports生成的报表图片,不缓存呢?!
首先,通过firebug查看生成的报表图片代码:
<img alt="" style="height: 310px;" src="./servlets/image?image=img_0_0_9"/>
当更改查询条件时,所生成的报表图片代码并没有改变,所以IE便不去下载该图片。在IFrame中右键刷新一下
图片便能显示!
如果每次生成的图片名都不一样,那么IE便自动每次都要下载了。解决方法就是给image加参数:
代码如下:
- JRHtmlExporter exporter = new JRHtmlExporter();
- request.getSession().setAttribute(
- ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
- jasperPrint);
- exporter
- .setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
- exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
- //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"./servlets/image?image=");
- //通过修改图片的url来实 现
- exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
- "./servlets/image?"+"time="+(new Date()).toString()+"& image=");
我给image加了个时间参数
生成的报表图片代码如下:
- <img alt="" style="height: 310px;" src="./servlets/image?time=Tue Jun 30 17:35:36 CST 2009&image=img_0_0_9"/>
这样,每次都会下载了!