【问题标题】:How to get the current bean when iterating over a JRBeanCollectionDataSource in Jasper Reports?在 Jasper Reports 中迭代 JRBeanCollectionDataSource 时如何获取当前 bean?
【发布时间】:2013-02-01 00:07:08
【问题描述】:

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

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

${_THIS}.computeSomeValue()

有没有更好、更标准的方法?

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    我通常使用扩展 JRDefaultScriptlet 的 custom_Scriptlet(如果我需要与我的 bean 相关的任何其他方法调用)。我认为更好的方法是收集您将需要的所有数据(在您的 bean 中作为具有 setter/getter 方法的实例变量,或者在您填写报告时作为参数传递)。

    这样您就可以让属性 bean 方法处理其余的事情。

    【讨论】:

    • 大多数时候,是的,最好的方法是在填写报告之前准备好您的数据。但是在某些情况下,当前 bean 的句柄会使生活变得更容易。例如,当您在运行时而不是在报告编译时知道 bean 属性时。
    【解决方案2】:

    试试:

    $P{REPORT_DATA_SOURCE}.getData().get($V{REPORT_COUNT} - 1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      相关资源
      最近更新 更多