JasperReports (5.6.1) 在我们删除一个 mongo 数据库数据源并传递一个对象作为参数后无法正确呈现,该对象包含我们在报告中需要的所有信息。生成的 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"]]>
我们认为它与参数对象无关,而是由于删除了外部数据源而导致内部损坏?!
我们不知道在这里做什么,也许有人给了我们提示?
最佳答案
您可以尝试在报告填充期间传递 JREmptyDataSource,其中以前是对您的 Mongo DB 数据源的引用。
代码在您的情况下可能会有所不同,但这里有一个示例:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
关于java - 引入参数对象后Jasper不渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31943762/