如何在jasperreports中访问数据源的根元素

Luc*_*ado 10 jasper-reports

我有一个由MyJavaBean集合支持的报告.

在本报告中,我(当然)可以获取MyJavaBean的属性,在Fields中声明它们并在详细信息带上使用它,到目前为止一直都很好.

现在我希望能够将此MyJavaBean作为子报表的参数传递.看来我希望能够传递javabean本身,而不是它的一个属性.

如何在详细信息带中引用我的收藏中的一个元素?

Gen*_*Jon 16

引用bean

要声明引用bean本身而不是其中一个属性的字段,请将字段描述设置为关键字_THIS.

<field name="myJavaBean" class="com.your.package.MyJavaBean">
    <fieldDescription>_THIS</fieldDescription>
</field>
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其作为子报表参数传递,就像任何其他字段一样.

<subreportParameter name="myJavaBean">
    <subreportParameterExpression>
        <![CDATA[$F{myJavaBean}]]>
    </subreportParameterExpression>
</subreportParameter>
Run Code Online (Sandbox Code Playgroud)

bean中的方法可以通常的方式调用,即: $F{myJavaBean}.someMethod()

引用集合的单个元素

根据你在这里做的事情,可能会更困难.如果只想查看单个元素的详细信息,请将printWhenExpression波段设置为所需元素的键.但是,如果您希望某些报表元素引用集合中的一个对象,而其余的带引用另一个对象,则最好将另一个子报表嵌套在详细信息区域中.