3

我正在使用 mule studio 开发应用程序,我需要使用“Choice”组件,但我想评估的不是有效负载中包含的消息属性,而是属性文件中包含的变量,如下所示:

<choice doc:name="Choice">
                <when expression="${CONTROL_VARIABLE}.equals(&quot;S&quot;)">
                    <set-variable variableName="URL_ADDRESS" value="${URL_PREPATH_VALUE}/[#payload.URL]" doc:name="Variable"/>
                </when>
                <otherwise>
                    <set-variable variableName="URL_ADDRESS" value="[#payload.URL]" doc:name="Variable"/>
                </otherwise>
            </choice>

当然它不起作用,因为如果我理解正确,只能评估消息有效负载。

我怎样才能以最好的方式完成任务?我是否必须以某种方式在有效负载中添加所有属性文件变量?

谢谢!

4

3 回答 3

2

CHOICE 中的条件表达式绝对可以很好地处理从属性文件加载的数据。

尝试以下部分,它应该可以工作。

<when expression="'${CONTROL_VARIABLE}' == 'S'">

希望这可以帮助。

于 2013-08-30T14:54:05.740 回答
1

您还可以参考下面的属性文件定义选择表达式条件。

<when expression="#['${test}' =='1']">

于 2015-02-11T03:58:08.977 回答
-2

您只是缺少用单引号将您的属性引用括起来。您也可以使用 equals 方法而不是使用==运算符。您只需要在比较之前用单引号将您的属性引用括起来。

<*when expression="'${CONTROL_VARIABLE}'.equals('S')"*>

说明:当您用单引号括起属性引用时,如 '${CONTROL_VARIABLE}' 它会在此之后转换为字符串对象,您可以应用任何支持字符串类型的方法/运算符。

希望这可以帮助。

于 2015-11-11T15:18:24.123 回答