首页 > 解决方案 > Jaspersoft Studio - 创建字符串集合

问题描述

使用 Jaspersoft Studio 6.4。

我正在尝试使用嵌套类型 java.lang.String 创建一个 java.util.Collection。

我想用我的数据查询中的值填充集合:遍历 Field $F{CostCenter} 的值并将每个值添加到我的集合中。(我的查询是域查询)。

我努力了

  1. 创建集合变量
  2. 按我的 CostCenter 组递增变量
  3. 将字段值添加到我的变量

    <variable name="dls_CCArray" class="java.util.Collection" incrementType="Group" incrementGroup="CCGroup">
      <variableExpression><![CDATA[$V{dls_CCArray}.add( $F{costCenterSet.costCenterConcatenated} )]]> 
      </variableExpression>
    </variable>
    

但是我的变量为空,即使我知道我的查询正在返回成本中心。

我需要这样做的原因:我有一个可选的输入控件。当我选择无成本中心时,我仍然需要通过我的超链接参数将查询返回的成本中心值列表传递给我的下一个报表。

提前致谢

标签: collectionsjasper-reports

解决方案


您可以使用第二个变量将值添加到集合变量中。此外,由于引擎可能会多次评估变量表达式,因此在 Set 中收集值会更安全,这样您就不会得到重复的值。

因此你可以有这样的东西:

<variable name="Values" class="java.util.Set" calculation="System">
    <initialValueExpression>new java.util.HashSet()</initialValueExpression>
</variable>
<variable name="ValueAdd" class="java.lang.Boolean">
    <variableExpression>$V{Values}.add($F{costCenterSet.costCenterConcatenated})</variableExpression>
</variable>

推荐阅读