我尝试使用 iReport 中的默认 REPORT_DATA_SOURCE 参数将数据从数据源传递到我的子报表,以进一步传递到其中的另一个子报表。分报告。我能够在主报表的参数列表中看到 REPORT_DATA_SOURCE 作为参数,但是当我在子报表中设置连接类型并尝试将数据源表达式设置为以下内容时: new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{REPORT_DATA_SOURCE})
,我收到 JRValidationException ,说找不到参数。
当这是一个内置参数时,知道为什么会这样做吗?
答案 0 :(得分:2)
您不应该这样做
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{REPORT_DATA_SOURCE})
完全没有。您应该能够简单地将数据源表达式设置为
$P{REPORT_DATA_SOURCE}
$ P {REPORT_DATA_SOURCE}是JRDataSource的一个实例,它是所有不同类型的数据源JasperReports定义实现的接口。在实际的报告级别,它与JRDataSource的具体实现无关。
在您的代码中,您还没有尝试将JRDataSource实例传递给JRBeanCollectionDataSource的构造函数来创建新实例。无需这样做。