collections - Jaspersoft Studio - 创建字符串集合
问题描述
使用 Jaspersoft Studio 6.4。
我正在尝试使用嵌套类型 java.lang.String 创建一个 java.util.Collection。
我想用我的数据查询中的值填充集合:遍历 Field $F{CostCenter} 的值并将每个值添加到我的集合中。(我的查询是域查询)。
我努力了
- 创建集合变量
- 按我的 CostCenter 组递增变量
将字段值添加到我的变量
<variable name="dls_CCArray" class="java.util.Collection" incrementType="Group" incrementGroup="CCGroup"> <variableExpression><![CDATA[$V{dls_CCArray}.add( $F{costCenterSet.costCenterConcatenated} )]]> </variableExpression> </variable>
但是我的变量为空,即使我知道我的查询正在返回成本中心。
我需要这样做的原因:我有一个可选的输入控件。当我选择无成本中心时,我仍然需要通过我的超链接参数将查询返回的成本中心值列表传递给我的下一个报表。
提前致谢
解决方案
您可以使用第二个变量将值添加到集合变量中。此外,由于引擎可能会多次评估变量表达式,因此在 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>
推荐阅读
- php - 如何修复 Laravel“此路线不支持 Post 方法”?
- c - 将循环中创建的子 pid 分配给数组
- php - 是否有 wordpress 功能来检测插件是否不是最新的?
- javascript - SetimeOut 间隔因“无法将未定义或空值转换为对象”而失败
- ibm-cloud-infrastructure - 如何将关联的 VLAN 子网路由到我在 SoftLayer 上的 Vyatta?
- azure - az:错误:无法识别的参数:--query loginServer
- windows - Windows 调度程序——公平时间切片如何工作?
- java - 我有一个用户类,它有一个私有字段 ArrayList