3

我的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

我该如何纠正?

EDIT XSL变压器声明为:

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

2 回答 2

1

应通过以下方式访问 places 变量:

#[flowVars['places'].contains(message.payload)]
于 2013-02-27T20:04:50.687 回答
1

你的配置有两个问题:

  • 您用于创建列表的表达式不正确:它实际上只是创建一个String. 请改用 MEL 表达式:

    <set-variable variableName="places"
                  value="#[{'Buenos Aires', 'Córdoba', 'La Plata'}]"/>
    
  • 使用 MELcontains在此位置列表中查找字符串有效负载:

    #[places contains message.payload]
    
于 2013-02-28T02:19:09.963 回答