【发布时间】:2009-11-20 17:02:57
【问题描述】:
我正在使用 java 和 iReport(来自 jasper)创建一个简单的报告程序,它应该创建一个 pdf 格式的报告,显示 PC 的 IP 地址、位置、当前是否空闲(由另一个处理系统),以及它当前附加到的项目列表(也在其他地方管理)。
我正在为此使用 iReport,并创建了一个虚拟集合生成类,如下所示:
public class PCReports {
public static java.util.Collection PC_collection;
public static java.util.Collection generateCollection() {
PC_collection = new ArrayList<PCLineDTO>();
PCLineDTO line = new PCLineDTO();
line.setIP("192.168.1.1");
line.setLab("location");
line.setActive(true);
line.addProjectName("project1");
line.addProjectName("project2");
line.addProjectName("project3");
PC_collection.add(line);
line = new PCLineDTO();
line.setIp("192.168.1.2");
line.setLab("location2");
line.setActive(false);
line.addProjectName("project1");
line.addProjectName("project2");
PC_collection.add(line);
return PC_collection;
}
}
本例中的实体类为:
public class PCLineDTO {
private String ip;
private String lab;
private Boolean active;
private ArrayList<String> projects;
}
在网上搜索了一番后,我找到了a way to do something similar,使用子报告。
问题是,我不知道如何打印作为数据源传递给此子报表的字符串集合。
在我在 Internet 上找到的示例中,对于主集合中的每个项目,子报表都传递了一个 对象 的集合 - 每个属性都有自己的 getter 方法 - 而不是一个集合strings 就像这里的情况一样。在这些情况下,他们通过 iReport 语法访问他们需要使用的值,而我无法使用,例如:
$F{project}
因为 iReport 会在它接收的对象中查找 getProject 方法,但在这种情况下,它是一个简单的 String 对象(实际上没有 getProject 方法)。
【问题讨论】:
-
您使用的是什么 JasperReport/iReport 版本?
-
@medopal:谢天谢地,最新的(在本文发布时:3.6.1)。
标签: jasper-reports javabeans ireport