我有一个子报告,我在主jasper报告中使用过,我使用InputStream
从java表单发送子报告,这是代码:
InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
在主报告中,我创建了一个类为InputStream
的参数,并接受我使用hashmap传递的java表单中的值。
我的问题是,当只有一页时,一切正常,但只要有一页以上,我就会收到这个错误:
error in loading object from input stream
这是我的碧玉代码
<parameter name="subrepopath" class="java.io.InputStream" isForPrompting="false"/>
答案 0 :(得分:0)
我也遇到了这个问题,最近才感谢this post找到了解决方案。
您需要做的是将子报表类型更改为Object:
<parameter name="subrepopath" class="java.lang.Object" isForPrompting="false"/>
在SubReport属性中,将Expression类设置为:
net.sf.jasperreports.engine.JasperReport
在您的代码中,您需要将对象加载到JasperReport对象中,这是我与链接页面的区别methods used are deprecated。
所以你会这样做:
InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
JasperReport subJasperReport = (JasperReport)JRLoader.loadObject(suprepo);
然后使用subJasperReport
键在参数地图中添加对象subrepopath
,您将发现现在可以正确生成多页报告。
答案 1 :(得分:0)
我遇到了同样的问题,它是由与其他版本的 Jasper 报告编译的子报告 (.jasper) 引起的。