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

Jasper reports 如何在jasperreports中访问数据源的根元素,jasper-reports,Jasper Reports,我有一份由MyJavaBean集合支持的报告 在这个报告中,我(当然)可以得到MyJavaBean的属性,在字段中声明它们,并在细节栏中使用它们,到目前为止还不错 现在我希望能够将这个MyJavaBean作为子报表的参数传递。我希望能够传递javabean本身,而不是它的一个属性 如何在detais波段中引用我收藏的一个元素?引用bean 要声明引用bean本身而不是其属性的字段,请将字段描述设置为关键字\u THIS <field name="myJavaBean"

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

在这个报告中,我(当然)可以得到MyJavaBean的属性,在字段中声明它们,并在细节栏中使用它们,到目前为止还不错

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

如何在detais波段中引用我收藏的一个元素?

引用bean 要声明引用bean本身而不是其属性的字段,请将字段描述设置为关键字
\u THIS

<field name="myJavaBean" class="com.your.package.MyJavaBean">
    <fieldDescription>_THIS</fieldDescription>
</field>

_这个
然后可以像其他字段一样将其作为子报表参数传递

<subreportParameter name="myJavaBean">
    <subreportParameterExpression>
        <![CDATA[$F{myJavaBean}]]>
    </subreportParameterExpression>
</subreportParameter>

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

引用集合的单个元素
取决于你在这里做什么,这可能会更困难。如果只想查看单个元素的详细信息,请将带上的
printweenexpression
设置为所需元素的键。但是,如果您希望某些报表元素引用集合中的一个对象,而其余的标注栏引用另一个对象,则最好在详细信息标注栏中嵌套另一个子报表。

我认为您不能以这种方式使用参数。您可以做的是确保bean位于类路径中,然后实例化并调用它。bean可能必须通过网络进行通信才能初始化。考虑为您的bean实现一个超类,它可以将其属性作为参数。当我尝试用Maven编译它时,它显示CaseNoNojdExtPcExpTebug。还有一个问题是,是否可以编写这个新的net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{u THIS}.getList1())@DhruvilThaker也许值得为您的Maven问题提出一个新问题。关于您的代码,我不希望它能够工作,因为
getList1()
不是
java.util.List
的方法,但是如果您使用该方法将类更改为类型,那么我不明白为什么它不能工作。(假设您定义的是子报表的数据源,而不是主报表,否则我认为这些字段还没有解决。)