我需要在同一个 JasperReports 的报告中显示两个图表,一个显示产品数据,另一个显示人员数据。
通常,我可以定义一个返回单个bean集合的工厂类,例如产品数据bean。我可以在报告中提供两个豆类集合吗?
我不能使用子报表,我需要使用Java Beans数据源。
答案 0 :(得分:-1)
嗯,我不知道你是否还需要这个答案,但也许其他人需要。
你真的不需要两个bean集合,但通过创建一个helperClass组合成一个,让我们说Products_Person_Class然后添加你需要的字段的实例变量(不要忘记getter和setter)然后在另一个Class中设置实例的变量;
例如,假设您在报告中需要两个字段。一个来自Person数据,另一个来自Product data(字段是PersonId和ProductId)
你制作助手类
public class Products_Person{
private String personId;
private String productId;
//make sure you have a constructor
public Products_Person(){
}
public String getPersonId(){
return personId;
}
public String setPersonId(String personId){
this.personId = personId;
//do the same for productId
}
然后在另一个类中设置变量:
//lets use hard code numbers for simplicity
Products_Person p = new Products_Person();
p.setPersonId("011111");
p.setProductId("5555");
然后将此类型添加到Products_Person
类型的列表中List<Products_Person> list = new ArrayList<Product_Person>();
list.add(p.getPersonId());
list.add(p.getProductId());
因此,在您的收藏中,您将拥有:
public Collection<Products_Person> getBeanDataSource(){
return list;
然后在您的报告中,您将能够看到这些字段或将数据放入图表
$F(personId)
$F(productId)