Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 填写jasper报告时的进度_Java_Jasper Reports - Fatal编程技术网

Java 填写jasper报告时的进度

Java 填写jasper报告时的进度,java,jasper-reports,Java,Jasper Reports,我想在Jasper reports填写编译报告时向用户提供进度。 基本上,我希望在执行过程中取得进展: JasperFillManager.fillReport(JasperReport rpt、映射参数、JRDataSource src) 有没有办法做到这一点?我正在使用PrimeFaces中的这些组件来显示报告正在生成: <p:ajaxStatus onstart="dlg.show();" onsuccess="dlg.hide();" /> <p:dia

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

JasperFillManager.fillReport(JasperReport rpt、映射参数、JRDataSource src)


有没有办法做到这一点?

我正在使用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>


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

我担心无法监控jasper report的填写进度(从4.0.2版开始)net.sf.jasperreports.engine.fill.JRFiller不提供任何进度通知。

从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

我们正在使用AsynchronousFillHandle和AsynchronousFilllListener,其中填充发生在不同的线程上。这允许我们显示自己的进度条,并可以取消。不幸的是,监听器并没有给出真正的进度指示,只是在完成或出错时发出通知,因此进度条是“无限”的。我们已经在RCP/SWT/JFace应用程序中使用作业框架实现了这一点。我们也没有真正的进步。这很奇怪,因为导出到文件时有可用的进度。我想知道谁能轻易地为Jasper做出贡献……我认为适当的报告生成进度仍然必须在Jasper报告中得到适当的实现,并向客户公开。现在它可以作为jasperreports-4.7.0.jar的一部分提供