我的 Mule 3.3.0
配置中有一个条件表达式,如下所示:
<when expression="#[places.contains(message.payload)]">
. . .
</when>
places
是声明为的局部变量
<set-variable variableName="places" value="{'Buenos Aires', 'Córdoba', 'La Plata'}"/>
在执行上述条件表达式之前,有一个设置有效负载的 XSL
转换器。如果 payload 非空,条件表达式可以正常工作,但在 xsl 转换器不返回结果且 #[payload]
为 empty
的情况下,仍然在条件语句上方返回 真
。
我该如何纠正这个问题?
编辑
XSL
转换器声明为:
<xm:xslt-transformer xsl-file="xsl/getPlaces.xslt" returnClass="java.lang.String"/>
最佳答案
你的配置有两个问题:
您用来创建列表的表达式不正确:它实际上只是创建了一个
String
。请改用 MEL 表达式:<set-variable variableName="places" value="#[{'Buenos Aires', 'Córdoba', 'La Plata'}]"/>
使用 MEL
contains
在此位置列表中查找字符串有效负载:#[places contains message.payload]
关于java - 为什么 Mule ArrayList.contains() 为空/空字符串提供不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120496/