jasperreports-javaflow的用法是什么?
我提到了以下两个链接,我不清楚。你能详细说明一下吗?
http://community.jaspersoft.com/questions/529333/jasperreports-javaflow-versus-jasperreports
答案 0 :(得分:6)
jasperreports-javaflow是标准JasperReports jar的变种,可以在禁止生成新Java线程的环境中使用。例如,几年前使用EJB容器就是这种情况(不知道它是否仍然如此)。但在大多数情况下,标准的JasperReports jar都很好,你不必担心jasperreports-javaflow。
JasperReports创建线程(默认情况下)以呈现子报表(和表元素),因为页面/列中断要求子报表生成在调用堆栈中的某个点停止,然后在新页面/列上继续。 Commons Javaflow continuations提供了一种在没有线程的情况下执行此操作的机制,jasperreports-javaflow jar具有为Javaflow continuation设备的类。另请参阅JasperReports subreport sample documentation。
要使用continuation子报表运行程序,您需要在类路径中包含jasperreports-javaflow jar(而不是常规jasperreports jar,您不应该同时使用这两者)以及Commons Javaflow jar(例如http://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/org/apache/commons/commons-javaflow/20160505/处的jar)并在jasperreports.properties中设置以下属性:
net.sf.jasperreports.subreport.runner.factory=net.sf.jasperreports.engine.fill.JRContinuationSubreportRunnerFactory
更新: 从版本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。