Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Jasper Reports中迭代JRBeanCollectionDataSource时,如何获取当前bean?_Java_Jasper Reports - Fatal编程技术网

Java 在Jasper Reports中迭代JRBeanCollectionDataSource时,如何获取当前bean?

Java 在Jasper Reports中迭代JRBeanCollectionDataSource时,如何获取当前bean?,java,jasper-reports,Java,Jasper Reports,Jasper Reports文档对此问题保持沉默,JRDataSource接口不明确允许访问当前bean。如果您想调用一些非属性方法,那么当前bean句柄非常有用 到目前为止,我在jasper reports源代码中找到的唯一解决方案是在报告中使用此字段,并在其上调用所需的方法: ${_THIS}.computeSomeValue() 有更好、更标准的方法吗?我通常使用一个自定义的Scriptlet来扩展JRDaultScriptlet(如果我需要与我的bean相关的任何其他方法调用的话)。我

Jasper Reports文档对此问题保持沉默,JRDataSource接口不明确允许访问当前bean。如果您想调用一些非属性方法,那么当前bean句柄非常有用

到目前为止,我在jasper reports源代码中找到的唯一解决方案是在报告中使用此字段,并在其上调用所需的方法:

${_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属性时。