dad*_*a67 8

jasperreports-javaflow是标准JasperReports jar的变体,可以在禁止产生新Java线程的环境中使用。例如,几年前EJB容器就是这种情况(不知道是否仍然如此)。但是在大多数情况下,标准的JasperReports jar很好,您无需担心jasperreports-javaflow。

JasperReports创建线程(默认情况下)以呈现子报表(和表元素),因为页面/列中断要求子报表生成在调用堆栈中的某个点停止,然后在新的页面/列上恢复。 Commons Javaflow延续提供了一种无需线程即可执行此操作的机制,并且jasperreports-javaflow jar具有为Javaflow延续检测的类。另请参阅JasperReports子报表示例文档

要使用Continuations Subreport运行程序,您需要在类路径中包括jasperreports-javaflow jar(而不是常规的jasperreports jar,您不应同时使用)和Commons Javaflow jar(例如,位于http://的一个)jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/org/apache/commons/commons-javaflow/20160505/),并在jasperreports.properties中设置以下属性:

net.sf.jasperreports.subreport.runner.factory=net.sf.jasperreports.engine.fill.JRContinuationSubreportRunnerFactory
Run Code Online (Sandbox Code Playgroud)

更新:从版本6.6.0开始,JasperReports使用 tascalate-javaflow而不是Apache Commons Javaflow(用于Java 8支持)。因此,您需要在类路径上有一个net.tascalate.javaflow.api jar(例如 net.tascalate.javaflow.api-2.2.1.jar),而不是Commons Javaflow jar。