java - 引入参数对象后Jasper不渲染

标签 java parameters jasper-reports

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/

相关文章:

java - 如何将eclipse项目类路径添加到ant脚本中?

java - Jtwig获取参数显示

具有三个可选参数但一个必需参数的 PHP 类构造?

c - 简单 : Passing data to c program from terminal (Mac)

jasper-reports - JasperReports 中跨页面的水印

java - javax.inject.Named 注释应该用于什么?

java - Cobertura 排除了不在多模块 Maven 3 项目中工作的情况

java - Spring和后台线程执行

java - 删除掉的函数

java - 如何使用 JasperReports 生成 HTML 报告流?