JasperReport在導出html中應用iframe所遇到的緩存問題

核心提示:在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加參數:

代碼如下:

  1. JRHtmlExporter exporter = new JRHtmlExporter();      
  2.             request.getSession().setAttribute(      
  3.                     ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,      
  4.                     jasperPrint);      
  5.             exporter      
  6.                     .setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);      
  7.             exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);      
  8. //exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,"./servlets/image?image=");      
  9. //通過修改圖片的url來實 現                 
  10. exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,      
  11.                     "./servlets/image?"+"time="+(new Date()).toString()+"& image=");    

 

我給image加了個時間參數

生成的報表圖片代碼如下:

  1. <img alt="" style="height: 310px;" src="./servlets/image?time=Tue Jun 30 17:35:36 CST 2009&image=img_0_0_9"/>  

這樣,每次都會下載了!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章