gpt4 book ai didi

java - 如何使用JavaBeans作为数据源显示嵌套对象?

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:15 25 4
gpt4 key购买 nike

这是我的 java 对象:

Class1.java:

public class Class1 {
public Class2 object2;
...
}

Class2.java:

public class Class2 {
public Class3 object3;
...
}

Class3.java:

public class Class3 {
public List<Class4> list4;
...
}

Class4.java:

public class Class4 {
public String string1;
public String string2;
public String string3;

public Class5 object5;
...
}

我有一个包含子报表的报表,并且两者都使用相同的数据源,如下所示:

public static void execute(List<Class1> data) throws FileNotFoundException, JRException {

BufferedInputStream reportStream = new BufferedInputStream(new FileInputStream("C:/Users/user1/Downloads/report2.jrxml"));

// Bing the datasource with the collection
JRDataSource datasource = new JRBeanCollectionDataSource(data, false);

Map<String, Object> parameters = new HashMap<String, Object>();

parameters.put("SUBREPORT_DIR", "C:\\Users\\user1\\Downloads\\");

parameters.put("SUB_DATA_SOURCE", data);

// Compile and print the jasper report
JasperReport report = JasperCompileManager.compileReport(reportStream);
JasperPrint print = JasperFillManager.fillReport(report, parameters, datasource);

// Export report to PDF
JasperExportManager.exportReportToPdfFile(print, "C:/Users/user1/Downloads/JavaBeansPDF.pdf");
}

SUB_DATA_SOURCE 是我在 iReport 中定义到报表和子报表中的参数,参数类为:java.util.List

我尝试将 Class1 中的简单值显示到报告中,并且它有效。

但我的问题是如何显示我的列表的内容 List<Class4> list4 进入子报表

我需要在我的报告中显示这个“表”:

<小时/>

字符串1 ------- 字符串2 ------- 字符串3 ------- object5.getElement1 ...

abc ------------- cde ---------- 测试 ------------- value1 ...

<小时/>

我不知道我的问题是否清楚,请指出是否有令人困惑或遗漏的内容。

PS:我使用的是 JasperReports v5.6.0 和 iReport v5.6.0

最佳答案

您正在通过List<Class1>作为数据源,这意味着您在报告中具有此字段定义

<field name="object2" class="your.package.Class2"/>

显示Class4中的数据,您需要为此数据创建子报表或使用 <jr:table/>组件。

此子报表的数据源或 <jr:table/>将是:

<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{object2}.getObject3().getList4())]]></dataSourceExpression>

处理NullPointer超出了这个答案,我假设您对所有字段都有公共(public) setter/getter

关于java - 如何使用JavaBeans作为数据源显示嵌套对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com