我想创建一个arrayList并遍历其条目以检查我的消息是否具有设置属性
<set-variable variableName="ex" value="#[{'A', 'User-Agent', 'Application-ID', 'API-Key', 'P', 'Organization-ID'}]" doc:name="Set Variable" />
<for-each collection="#[ex]" doc:name="Foreach">
<choice doc:name="Choice">
<when expression="#[message.inboundProperties.contains([payload]) == false]">
<set-variable variableName="isRequestValid" value="false" doc:name="Variable"/>
</when>
</choice>
</for-each>
我在for-each表达式中收到错误(从元素'for-each'开始找到无效内容)。我们还可以使用选择块而无需其他选项吗?
答案 0 :(得分:1)
foreach
#[['A','B']]
expression-filter
- <set-variable variableName="ex" value="#[['A', 'User-Agent', 'Application-ID', 'API-Key', 'P', 'Organization-ID']]" doc:name="Set Variable" />
<foreach collection="#[ex]" doc:name="Foreach">
<expression-filter expression="#[message.inboundProperties.contains([payload]) == false]" doc:name="Expression"/>
<set-variable variableName="isRequestValid" value="false" doc:name="Variable"/>
</foreach>
答案 1 :(得分:0)
您可能正在使用旧的Mule版本,因为每个构造都包含在3.4中(请参阅release notes),我无法想到该错误的其他原因。 遗憾的是,除非另有说明,否则您无法使用选项,但报告中有一项改进:https://www.mulesoft.org/jira/browse/MULE-6129
答案 2 :(得分:0)
它应为foreach
而不是for-each
。
我们可以使用Choice块而不用否则选项。但是当值与时选项中的逻辑不匹配时,它会引入运行时错误。
答案 3 :(得分:0)
由于您已经解决了for-each的问题,因此可以使用以下表达式
解决剩余问题#[message.inboundProperties[payload] !=null]
如果它返回true
,则标题不存在。
希望这有帮助。