在mule中创建一个arraylist并迭代它

时间:2016-06-08 02:11:03

标签: list mule mule-studio mule-component

我想创建一个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'开始找到无效内容)。我们还可以使用选择块而无需其他选项吗?

4 个答案:

答案 0 :(得分:1)

  1. 应为foreach
  2. 列表可以初始化为#[['A','B']]
  3. 如果您不需要,也就是过滤掉有效负载,可以在foreach中使用expression-filter -
  4.     <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,则标题不存在。

希望这有帮助。