2010-10-26 6 views
8

Me gustaría informar al usuario mientras Jasper informa que está completando un informe de compilación. Básicamente me gustaría conseguir este progreso mientras se está ejecutando:Avance mientras se completa el informe de jaspe

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

¿Hay alguna forma para lograr esto?

+1

Nosotros están usando AsynchronousFillHandle y AsynchronousFilllListener, en el que el relleno ocurre en un hilo diferente. Esto nos permite mostrar nuestra propia barra de progreso, con la capacidad de cancelar. Desafortunadamente, el oyente no da una indicación de progreso real, simplemente notifica sobre la finalización o el error, por lo que la barra de progreso es 'infinita'. – yshalbar

+0

Ya lo logramos, utilizando el marco de trabajo en nuestra aplicación RCP/SWT/JFace. Tampoco tenemos un progreso real. Es extraño porque hay progreso disponible al exportar al archivo. Me pregunto quién es fácil de contribuir con Jasper ... – Craig

Respuesta

0

estoy usando estos componentes de PrimeFaces para demostrar que está generando el informe:

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

que no tienen ninguna manera real para determinar el tiempo total de mis informes tomarán para compilar y llenar, por lo Opté por no usar una barra de progreso real que a veces se llena antes de que se complete el informe.

+0

Estoy pensando que el progreso adecuado de la generación de informes aún debe implementarse correctamente en los informes de jaspe y expuesto a los clientes. – Craig

0

Me temo que no es posible controlar el progreso del llenado del informe de jaspe (a partir de la versión 4.0.2) - net.sf.jasperreports.engine.fill.JRFiller no ofrece ningún tipo de notificación de progreso.

2

De Jasper Reports versión 4.6.0 Puede utilizar 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); 
    } 
}); 

NOTA: construir 4.6.0 versión de obtener fuentes de SVN y el uso de la hormiga:

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

Ahora está disponible como parte de jasperreports-4.7.0.jar – Cid

Cuestiones relacionadas