在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"/>
這樣,每次都會下載了!