IReport主從報表中出現的問題

最近在使用IReport與JasperReport做Web報表時遇到如下問題:
  在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/")+"/");
另:對於多個子報表,做法類似,只需設置子報表屬性即可(前提:所有子報表存放在同一路徑下),若存放在不同的路徑下, 需在主報表中建立多個表示子報表路徑的變量,一一對應到各個子報表上,並通過程序一一設定其真識路徑. 
發佈了44 篇原創文章 · 獲贊 4 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章