Прогресс при заполнении отчета о яшме - PullRequest
8 голосов
/ 26 октября 2010

Я хотел бы дать прогресс пользователю, пока отчеты Jasper заполняют отчет компиляции. В основном, я хотел бы получить прогресс во время выполнения:

JasperFillManager.fillReport (rpt JasperReport, параметры карты, источник JRDataSource)

Есть ли способ достичь этого?

Ответы [ 3 ]

2 голосов
/ 17 мая 2012

Из версии 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
0 голосов
/ 15 сентября 2011

Боюсь, что невозможно следить за ходом заполнения отчета jasper (начиная с версии 4.0.2) - net.sf.jasperreports.engine.fill.JRFiller не предлагает никаких уведомлений о прогрессе.

0 голосов
/ 13 января 2011

Я использую эти компоненты от 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>

У меня нет никакого реального способа определить общее время, необходимое моим отчетам для компиляции и заполнения, поэтому я решил не использовать фактический индикатор выполнения, который иногда заполняется до завершения отчета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...