我想在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

10-07 20:35