修复 iReport 中的子报表表达式 Class

Fix Subreport Expression Class in iReport

最近我在使用 JavaBeans 数据源打印主从报告时遇到了问题(由于某些原因我没有使用 MySQL 数据源)。

我无法将子报表的表达式class更改为java.util.List(我已经制作了subreport.jrxml和mainreport.jrxml)。但是如下图所示,我的子报表属性中不存在 class 表达式。

然后我尝试手动编写它。我将这些代码添加到我的 XML 文件中。

<subreport>
    <reportElement x="0" y="20" width="555" height="100"/>
    <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{orderDetails})]]></dataSourceExpression>
    <subreportExpression class="java.util.List"><![CDATA[$P{SUBREPORT_DIR} + "sub_main_report.jasper"]]></subreportExpression>
</subreport>

现在显示另一个类似这样的错误。

抱歉,如果我解释得不好。这里有没有人和我有同样的问题?

注意:我的iReport版本是4.0.1,JDK 1.7 运行 Linux Ubuntu 14.04 64位环境

subreportExpression只能和少数类一起使用,比如java.lang.String。不能是java.util.List。您的第二条错误消息显示已接受的列表 类.

更新

你要明白,subreportExpression告诉系统如何载入子报表。只能有一个值。所以表达式不能是 java.util.List。如果您有多个子报表,则必须有多个 subreport 的元素,每个元素都有自己的 subreportExpression