JasperReports使用相同类型的数据填充新页面

时间:2018-05-07 10:30:47

标签: java jasper-reports

我正在使用JasperReports,我想为同一个POJO类的不同对象生成图表。 POJO类如下所示:

public class POJOClass{
private Double value;
private long timestamp; //constructor+getters

我想做什么?

  • 在第一步中,我想从第一个对象的值填充图表。

  • 然后我想添加下一页并进入第二步循环, 从数据库获取下一个对象并在第二页填写图表。

我使用相同的POJO,但两个对象都有不同的价值。问题是我只能填一页。

for (int i = 0; i < size; i++) {
        List<POJOClass> pojoDescribtions= new ArrayList<>(); //add some result into List
        JRDataSource jrDataSource = new JRBeanCollectionDataSource(pojoDescribtions);
        parameterMap.put("datasource", jrDataSource);

        jasperPrint = JasperFillManager.fillReport(report, parameterMap, jrDataSource);

}

它总是为第二步创建图表,我不知道如何获得第一步。

1 个答案:

答案 0 :(得分:0)

我有类似的问题。

  • 而不是POJOClass列表准备POJO列表清单。它可以帮助您区分一个对象。
  • 创建JasperPrints列表
  • 创建循环
  • 在循环内部创建JRBeanCollection,将其放入parameterMap并创建放入列表的新jasper print。
  • 您可以返回JasperPrints列表,它可以正常工作。

    List<List<POJOClass>> pojoList = new ArrayList<List<POJOClas>>(); Map<String, Object> parameterMap = new HashMap<>(); List<JasperPrint> jasperPrints = new ArrayList<JasperPrint>(); JRDataSource jrDataSource; JasperPrint jasperPrint;

    for(int i=0; i<pojoList.size(); i++){
            jrDataSource = new JRBeanCollectionDataSource(pojoList.get(i));
            parameterMap.put("dataSource", pojoList.get(i));
            jasperPrint = JasperFillManager.fillReport(report, parameterMap, jrDataSource);
            jasperPrints.add(jasperPrint);
        }
    

最后你必须通过Exporter

简单地导出它