我在我的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"/>
答案 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]