在我们删除了一个mongo db数据源并将一个对象作为参数传递后,JasperReports (5.6.1)不能正确呈现,它包含了我们报表中所需的所有信息。现在,生成的pdf始终是一个空白的白页。
参数设置:
Map<String, Object> reportParameter = new HashMap<String, Object>();
reportParameter.put("myObject", myObject);
//...
JasperPrint print = JasperFillManager.fillReport(inputStream, reportParameter);在.jrxml内部:
<parameter name="myObject" class="de.me.MyObject"/>
<detail>
<band height="572" splitType="Stretch">
<textField>
<reportElement x="57" y="88" width="310" height="14" uuid="9000cf95-9a16-4e89-a9e1-52549680a729"/>
<textFieldExpression><![CDATA[$P{myObject}.getSomething().getAbout().getMe()]]></textFieldExpression>
</textField>
</band>
</detail>应该呈现的值是一个字符串,它是确定设置的,并且不为空。
我们使用的是Java 8,没有编译错误,但是当使用像这样的未定义的getter时,我肯定会遇到一个错误
<![CDATA[$P{myObject}.getSomething().getAbout().getInvalid()]]>当我们使用一个简单的字符串而不是对象时,渲染也会失败。但也没有错误,只有一个白页。
<![CDATA["foobar"]]>我们认为这与参数对象无关,相反,由于删除了外部数据源,内部发生了一些故障?!
我们不知道该怎么做,也许有人给了我们提示?
发布于 2015-08-19 20:23:53
您可以尝试在报告填充过程中传递一个JREmptyDataSource,这是对您的Mongo DB数据源的引用。
代码在您的情况下可能会有所不同,但这里有一个示例,说明它可能是什么样子:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());https://stackoverflow.com/questions/31943762
复制相似问题