Java Jasper在引入参数对象后未渲染

Java Jasper在引入参数对象后未渲染,java,parameters,jasper-reports,Java,Parameters,Jasper Reports,JasperReports(5.6.1)在删除mongo db数据源并将一个对象作为参数传递后无法正确呈现,该对象保存了报告中所需的所有信息。生成的pdf现在总是一个空白的白色页面 参数设置: Map<String, Object> reportParameter = new HashMap<String, Object>(); reportParameter.put("myObject", myObject); //... JasperPrint print = Jas

JasperReports(5.6.1)在删除mongo db数据源并将一个对象作为参数传递后无法正确呈现,该对象保存了报告中所需的所有信息。生成的pdf现在总是一个空白的白色页面

参数设置:

Map<String, Object> reportParameter = new HashMap<String, Object>();
reportParameter.put("myObject", myObject);
//...
JasperPrint print = JasperFillManager.fillReport(inputStream, reportParameter);
Map reportParameter=new HashMap();
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>

应该呈现的值是一个字符串,它通常是设置好的,不为null

我们正在使用Java8。没有编译错误,但我肯定会在使用未索引的getter(例如

<![CDATA[$P{myObject}.getSomething().getAbout().getInvalid()]]>

当我们使用简单字符串而不是对象时,渲染也会失败。但也没有错误,只是一个白色的页面

<![CDATA["foobar"]]>

我们认为它与参数对象无关,相反,由于删除了外部数据源,某些东西在内部被破坏了


我们不知道该怎么做,也许有人给了我们一个提示?

您可以尝试在报告填充期间传递一个JREmptyDataSource,其中引用了您的Mongo DB数据源

在您的情况下,代码可能会有所不同,但下面是一个示例:

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());

投票支持该建议,因为它可能在数据源问题上起作用。但当您将bean作为报告参数传递,然后尝试呈现它们的值时,仍然存在问题。我们通过使用JRBeanArrayDataSource解决了这个问题。