iReport $P{SUBREPORT_DIR} 參數的使用


ireport中提供了自帶屬性$P{SUBREPORT_DIR}當我們新建.jrxml文件時默認$P{SUBREPORT_DIR}="存放當前設計的.jrxml文件的文件夾絕對路徑" 
此時需注意應把$P{SUBREPORT_DIR}值設置為$P{SUBREPORT_DIR}="",這表示獲得當前運行環境的.jrxml文件的上級文件絕對路徑 
如果不進行此設置則部署到運行環境時會以設計時的路徑加載.jrxml文件,會報Could not load object from location:.jrxml錯誤 
另外如果設計時用到多級子報表,則應當把頂級報表的$P{SUBREPORT_DIR}參數傳給子報表,如果不進行此操作則第三級.jrxml文件不能被加載 
Could not load object from location:.jrxml 
在IReport中,主從報表完成制作后,在IReport中能夠正常編譯、運行及顯示,但加入Java Web應該中時出現下列錯誤: 
Could not load object from location : subunitlab.jasper,即主報表找不到子報表的模板(jasper)文件. 
  主要原因: 
  主報表找不到子報表的Jasper文件(深入分析) 
  解決辦法: 
  在主報表中設置變量SUBREPORT_DIR(若不存在則新建),代表子報表模板文件的真識路徑,設置子報表的屬性Subreport Expression 的值為:$P{SUBREPORT_DIR}+"subreportname.jasper",通過程序動態設置SUBREPORT_DIR,使得主報表能夠獲得子報表模板文件的真識路徑. 
  步驟如下: 
  1.設置主報表變量: SUBREPORT_DIR 
   Veiw-Parameters-選中SUBREPORT_DIR變量名-Modify-設置Default value Expression的值為:””; 
     2.修改子報表屬性 
   在主報表中右擊子報表,選擇Subreport(other)選項,設置Subreport Expression的值為:$P{SUBREPORT_DIR}+"subreportname.jasper" 
     3.在Action中動態獲得子報表的真識路徑,設置成SUBREPORT_DIR變量的值:param.setParameters("SUBREPORT_DIR",request.getRealPath("/Reports/")+"/"); 
另:對於多個子報表,做法類似,只需設置子報表屬性即可(前提:所有子報表存放在同一路徑下),若存放在不同的路徑下, 需在主報表中建立多個表示子報表路徑的變量,一一對應到各個子報表上,並通過程序一一設定其真識路徑.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM