在尝试打开碧玉报告时,在Java中从InputStream加载对象时出错

By simon at 2018-02-07 • 0人收藏 • 44人看过

我有一份我在主碧玉报告中使用的报告,我正在发送 使用InputStream从java窗体的子报表,这是代码:

InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
而在主报告中,我创建了一个类是的参数 InputStream,接受th从我的java窗体传递的值 使用hashmap。我的问题是,只有1,一切正常 页,但只要有多个页面,我收到这个错误:
error in loading object from input stream
这是我的碧玉代码
<parameter name="subrepopath" class="java.io.InputStream" isForPrompting="false"/>

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

我也遭受了这个问题,最近刚刚找到了解决方案 [这篇文章](https://community.jaspersoft.com/ques蒸发散/ 504094 / filling- 子报表-多次)。 你需要做的是改变你的子报告类型为对象:

<parameter name="subrepopath" class="java.lang.Object" isForPrompting="false"/>
在你身上r SubReport属性,将Expression类设置为:
net.sf.jasperreports.engine.JasperReport
[![更改报告 类型](https://i.stack.imgur.com/0LRgL.pn克)](https://i.stack.imgur.com/0LRgL.png) 在你的代码中,你需要把对象加载到一个JasperReport对象中 我在哪里如果从链接的页面看[使用的方法是 弃用](http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine / JasperManager.html)。 所以你会这样做:
InputStream suprepo = getClass().getResourceAsStream("LinuxTest_subreport1.jasper");
JasperReport subJasperReport = (JasperReport)JRLoader.loadObject(suprepo);
然后在你的参数图中用键添加对象subJasperReport subrepopath,你会发现你的多页面报告现在将生成 正确。

登录后方可回帖

Loading...