填写碧玉报告时取得进展

我想在Jasper报告填写编译报告时向用户提供进展。 基本上我想在执行时取得进展:

JasperFillManager.fillReport(JasperReport rpt,Map params,JRDataSource src)

反正有没有实现这个目标?

来自Jasper Reports版本4.6.0您可以使用FillListener

 AsynchronousFillHandle handle = AsynchronousFillHandle.createHandle(jasperReport, params, dataSource); handle.addFillListener(new FillListener() { @Override public void pageUpdated(JasperPrint jasperPrint, int pageIndex) { log.info("pageUpdated " + pageIndex); } @Override public void pageGenerated(JasperPrint jasperPrint, int pageIndex) { log.info("pageGenerated " + pageIndex); } }); 

注意 :要构建4.6.0版本从svn获取源代码并使用ant:

 svn co http://jasperforge.org/svn/repos/jasperreports (user/pass: anonymous) cd jasperreports\trunk\jasperreports ant jar 

我正在使用PrimeFaces中的这些组件来显示报告正在生成:

     

我没有任何真正的方法来确定我的报告编译和填充所需的总时间,因此我选择不使用实际的进度条,有时在报告完成之前填充。

我担心无法监控填充jasper报告的进度(从版本4.0.2开始) – net.sf.jasperreports.engine.fill.JRFiller不提供任何类型的进度通知。