这是我的ArrayList-
[
{
AccountNumber=123456,
Amount=257710.06
},
{
AccountNumber=845679,
Amount=3672351.06
}
]
在这里,我要检查帐号123456是否在列表中。 我使用了“选择”组件,因为我想用搜索到的帐号创建另一个列表。这是我的代码-
<choice doc:name="Choice">
<when expression="#[flowVars.investOneList.contains(123456)]">
<logger message="Account number is present" level="INFO" doc:name="Logger"/>
</when>
<otherwise>
<logger message="Account number is not present" level="INFO" doc:name="Logger"/>
</otherwise>
</choice>
在这里,我的记录器显示“帐户号不存在”。我的代码虽然在列表中,但找不到帐号。 有人可以帮我吗? 谢谢!
答案 0 :(得分:1)
如果要使用List.contains(...)
,则需要映射具有以下形式的变量:
%dw 1.0
%output application/java
---
flowVars.investOneList map $.AccountNumber
这将输出[123456, 845679]
作为payload
(如果需要,您可以设置其他内容)。然后,您可以在选择的路由器中执行此操作:
<choice doc:name="Choice">
<when expression="#[payload.contains(123456)]">
<logger message="Account number is present" level="INFO" doc:name="Logger"/>
</when>
<otherwise>
<logger message="Account number is not present" level="INFO" doc:name="Logger"/>
</otherwise>
</choice>
但是您可以通过使用dw()
函数来完成MEL中的全部操作:
...
<when expression="dw('(flowVars.investOneList map $.AccountNumber) contains 123456')">
...
这将防止您仅需要获取帐号列表就可以进行中间计算。