使用Java Bean数据源设置多个bean集合

时间:2014-08-14 15:52:38

标签: java jasper-reports datasource javabeans

我需要在同一个 JasperReports 的报告中显示两个图表,一个显示产品数据,另一个显示人员数据。

通常,我可以定义一个返回单个bean集合的工厂类,例如产品数据bean。我可以在报告中提供两个豆类集合吗?

我不能使用子报表,我需要使用Java Beans数据源。

1 个答案:

答案 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)