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/")+"/");
另:对于多个子报表,做法类似,只需设置子报表属性即可(前提:所有子报表存放在同一路径下),若存放在不同的路径下, 需在主报表中建立多个表示子报表路径的变量,一一对应到各个子报表上,并通过程序一一设定其真识路径.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值