我们如何在Jasper Reports中访问bean的参数?


问题内容

我们如何在Jasper Reports中访问bean的参数?

我必须在Jasper Reports中显示模型(不是集合)的数据。

我将模型作为参数传递给Jasper Report。

Map<String,Object> params = new HashMap<String,Object>();
params.put("object", object);

现在,该对象具有我需要在报告标题部分中显示其数据的字段。

像在jsp中我们一样${object.name}, ${object.phone},在JasperReports中如何实现呢?

我试过了,$P{object.name}但是没有用。

谁能让我知道如何实现这一目标?


问题答案:

有几个步骤可以完成此操作。

1) 定义参数: 这将是参数类型的完整软件包和类名。就像是:

<parameter name="object" class="com.mystuff.User"/>

2) 为所需的值调用getter方法:
将文本字段添加到适当的字段。如果我想getId()在User类中使用该方法的值,则我的文本字段将如下所示:

<textField>
    <reportElement uuid="09bf47a8-8fc7-45c5-911a-c79c3d405ada" x="205" y="22" width="100" height="20"/>
    <textElement/>
    <textFieldExpression><![CDATA[$P{parameter1}.getId()]]></textFieldExpression>
</textField>

3) 在iReport中设置类路径:
如果使用iReport设计报告,则需要告诉它com.mystuff.User类的编译版本位于何处。如果您在Eclipse中,则可以将其指向项目中的bin文件夹,或者如果您有一罐已编译的项目,则可以将其指向。类路径设置位于Tools -> Options -> Classpath Tab