填写碧玉报告时取得进展

时间:2010-10-26 06:16:24

标签: java jasper-reports

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

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

无论如何要实现这个目标吗?

3 个答案:

答案 0 :(得分:2)

来自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

答案 1 :(得分:0)

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

<p:ajaxStatus onstart="dlg.show();" onsuccess="dlg.hide();" />
        <p:dialog modal="true"  header="Creating Report" widgetVar="dlg" draggable="false" closable="false" >
            <p:graphicImage value="/resources/images/ajaxloadingbar.gif" />
        </p:dialog>

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

答案 2 :(得分:0)

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