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文件不能被加载。即把*的$P{SUBREPORT_DIR}传递给第二级,以保证第三级正常加载(已测试成功)。第N级依次类推(未测试)。

 

 

传递方法如下图(此为第*报表的自报表properties):


ireport 多级报表 $P{SUBREPORT_DIR}参数的使用
 
 
否则报错:Could not load object from location:***.jrxml

parametersMap.put("SUBREPORT_DIR",request.getRealPath("/jasper/")+"/");


注意在程序中给SUBEPORT_DIR赋.japer文件的上级目录值。