当通过 属性 文件加载一个字符串时,如何比较 mule 表达式中的字符串?

How do you compare strings in a mule expression when one string is loaded via a property file?

我在选择组件中有以下 mule 表达式:

 <choice doc:name="Choice">
        <when expression="'localhost' == ${environment}">
           ... Do something
        </when>

环境 属性 是通过 属性 文件加载的,似乎可以正确解析。但是,我收到以下错误:

[Error: unresolvable property or identifier: localhost]
[Near : {... 'localhost' == localhost ....}]

我也试过将表达式包裹在#[]中,并在比较中颠倒变量的顺序<when expression="${environment} == 'localhost'">,但我得到了同样的错误。

你应该使用等于:

<when expression="#['localhost'.equals(${environment})]">

spring 属性 在解析 XML 之前进行插值,当环境 属性 等于 "localhost":

<choice doc:name="Choice">
    <when expression="'localhost' == localhost">
       ... Do something
    </when>

Mu​​le 将查找名为 "localhost" 的流变量或会话变量,这可能不是您想要的。

试试这个:

<choice doc:name="Choice">
    <when expression="'localhost' == '${environment}'">
       ... Do something
    </when>

制作
表达式 ="'localhost' == '${environment}'" 将解决问题。在表达式右侧需要是另一个要比较的字符串,但在您的代码中它将被转换为“'localhost' == localhost 因为它无法解析本地主机,即赋值运算符的右侧它会抛出错误