为什么Mule ArrayList.contains()为空/空字符串提供了不正确的值

时间:2013-02-27 19:19:33

标签: java arraylist mule

我在我的Mule 3.3.0配置中有一个条件表达式,如下所示:

<when expression="#[places.contains(message.payload)]">

。 。

</when>

places是一个声明为

的局部变量
<set-variable variableName="places" value="{'Buenos Aires', 'Córdoba', 'La Plata'}"/>

在执行上述条件表达式之前,有一个XSL转换器设置有效负载。如果有效负载非空,则条件表达式工作正常但在xsl转换器未返回结果且#[payload]empty的情况下,仍然高于条件语句返回true

我该如何纠正?

修改 XSL变换器声明为:

<xm:xslt-transformer xsl-file="xsl/getPlaces.xslt" returnClass="java.lang.String"/>

2 个答案:

答案 0 :(得分:1)

应使用以下方式访问places变量:

#[flowVars['places'].contains(message.payload)]

答案 1 :(得分:1)

您的配置存在两个问题:

  • 用于创建列表的表达式不正确:它实际上只是创建String。改为使用MEL表达式:

    <set-variable variableName="places"
                  value="#[{'Buenos Aires', 'Córdoba', 'La Plata'}]"/>
    
  • 使用MEL contains在此地点列表中查找字符串有效内容:

    #[places contains message.payload]