Java 在Jasper Reports中迭代JRBeanCollectionDataSource时,如何获取当前bean?
Jasper Reports文档对此问题保持沉默,JRDataSource接口不明确允许访问当前bean。如果您想调用一些非属性方法,那么当前bean句柄非常有用 到目前为止,我在jasper reports源代码中找到的唯一解决方案是在报告中使用此字段,并在其上调用所需的方法:Java 在Jasper Reports中迭代JRBeanCollectionDataSource时,如何获取当前bean?,java,jasper-reports,Java,Jasper Reports,Jasper Reports文档对此问题保持沉默,JRDataSource接口不明确允许访问当前bean。如果您想调用一些非属性方法,那么当前bean句柄非常有用 到目前为止,我在jasper reports源代码中找到的唯一解决方案是在报告中使用此字段,并在其上调用所需的方法: ${_THIS}.computeSomeValue() 有更好、更标准的方法吗?我通常使用一个自定义的Scriptlet来扩展JRDaultScriptlet(如果我需要与我的bean相关的任何其他方法调用的话)。我
${_THIS}.computeSomeValue()
有更好、更标准的方法吗?我通常使用一个自定义的Scriptlet来扩展JRDaultScriptlet(如果我需要与我的bean相关的任何其他方法调用的话)。我认为一个更好的方法就是收集所有需要的数据(在bean中作为带有setter/getter方法的实例变量,或者在填充报告时作为参数传递)
通过这种方式,您可以让属性bean方法负责其余部分。我通常使用一个自定义的Scriptlet来扩展JRDaultScriptlet(如果我需要与我的bean相关的任何其他方法调用)。我认为一个更好的方法就是收集所有需要的数据(在bean中作为带有setter/getter方法的实例变量,或者在填充报告时作为参数传递) 这样,您就可以让属性bean方法处理其余部分。试试: $p{REPORT\u DATA\u SOURCE}.getData().get($V{REPORT\u COUNT}-1)试试:
$p{REPORT\u DATA\u SOURCE}.getData().get($V{REPORT\u COUNT}-1)大多数时候,是的,最好的方法是在填充报表之前准备数据。但在某些情况下,当前bean上的句柄会使生活变得更轻松。例如,当您在运行时而不是在报表编译时知道bean属性时,最好的方法是在填充报表之前准备数据。但在某些情况下,当前bean上的句柄会使生活变得更轻松。例如,当您在运行时而不是在报告编译时知道bean属性时。