Jasper reports 如何在子报表中声明和使用jasper参数,而不在主报表中声明它?

Jasper reports 如何在子报表中声明和使用jasper参数,而不在主报表中声明它?,jasper-reports,Jasper Reports,我想为子报表(页脚)使用参数 是否有一种简单的方法来声明参数并仅在子报表中使用它 我已经有了一个可行的解决方案,但我必须: 在主报告中声明我的参数 在主报表中将我的参数声明为子报表参数 在子报表中声明我的参数,以便最终能够使用它 我直接处理xml文件,没有iReport。基本上,我们不能。这是不可能的。因为参数可以是任何可以想象的类,所以您可以始终将参数包装在其他类中。例如,在Java中,可以使用映射。这样,您只需要为子报表声明一个参数,并通过包装类的相应getter访问映射中的每个子报表参

我想为子报表(页脚)使用参数

是否有一种简单的方法来声明参数并仅在子报表中使用它

我已经有了一个可行的解决方案,但我必须:

  • 在主报告中声明我的参数
  • 在主报表中将我的参数声明为子报表参数
  • 在子报表中声明我的参数,以便最终能够使用它

我直接处理xml文件,没有iReport。

基本上,我们不能。这是不可能的。

因为参数可以是任何可以想象的类,所以您可以始终将参数包装在其他类中。例如,在Java中,可以使用
映射
。这样,您只需要为子报表声明一个参数,并通过包装类的相应getter访问映射中的每个子报表参数

作为通用
哈希映射的示例:
这样申报

<parameter name="subreportParameters" class="java.util.HashMap" isForPrompting="false"/>
<![CDATA[$P{subreportParameters}.get("YOUR_PARAMETER_KEY") ]]>

像这样使用

<parameter name="subreportParameters" class="java.util.HashMap" isForPrompting="false"/>
<![CDATA[$P{subreportParameters}.get("YOUR_PARAMETER_KEY") ]]>

只有一个参数的缺点是子报表的可读性降低。对于像页脚这样的小型子报表,这可能是一个可接受的折衷方案