2010-10-26 4 views
8

Je souhaite que l'utilisateur progresse pendant que les rapports Jasper remplissent un rapport de compilation. En fait, je voudrais faire des progrès tout cela est en cours d'exécution:Progression lors du remplissage du rapport jasper

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

Y at-il de toute façon d'y parvenir?

+1

Nous utilisent AsynchronousFillHandle et AsynchronousFilllListener, dans lequel le remplissage se produit sur un thread différent. Cela nous permet de montrer notre propre barre de progression, avec la possibilité d'annuler. Malheureusement, l'auditeur ne donne pas d'indication de progression réelle, il ne fait que notifier à la fin ou à l'erreur, de sorte que la barre de progression est une barre "infinie". – yshalbar

+0

Nous y parvenons déjà, en utilisant le cadre de travail de notre application RCP/SWT/JFace. Nous n'avons pas non plus de réels progrès. C'est bizarre parce qu'il y a des progrès disponibles lors de l'exportation dans un fichier. Je me demande qui il est facile de contribuer à Jasper ... – Craig

Répondre

0

J'utilise ces composants de PrimeFaces pour montrer que le rapport génère:

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

Je n'ai aucune façon réelle pour déterminer le temps total mes rapports prendront pour compiler et remplir, donc J'ai choisi de ne pas utiliser une barre de progression réelle qui se remplit parfois avant la fin du rapport.

+0

Je pense que la bonne génération de rapports doit encore être implémentée correctement dans les rapports jasper et exposée aux clients. – Craig

0

Je crains qu'il ne soit pas possible de surveiller la progression du remplissage de jasper (à partir de la version 4.0.2) - net.sf.jasperreports.engine.fill.JRFiller n'offre aucune sorte de notification de progression.

2

De Jasper Reports version 4.6.0 Vous pouvez utiliser 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); 
    } 
}); 

NOTE: pour construire la version 4.6.0 obtenir des sources de svn et utiliser des fourmis:

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

Maintenant, il est disponible dans le jasperreports-4.7.0.jar – Cid

Questions connexes