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

当通过属性文件加载一个字符串时,如何比较mule表达式中的字符串?,mule,mule-el,Mule,Mule El,我在choice组件中有以下mule表达式: <choice doc:name="Choice"> <when expression="'localhost' == ${environment}"> ... Do something </when> 我还尝试将表达式包装在#[]中,并在比较中反转变量的顺序,但我得到了相同的错误。您应该使用equals: 在解析XML之前插入spring属性,当envir

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

 <choice doc:name="Choice">
        <when expression="'localhost' == ${environment}">
           ... Do something
        </when>
我还尝试将表达式包装在#[]中,并在比较中反转变量的顺序,但我得到了相同的错误。

您应该使用equals:


在解析XML之前插入spring属性,当environment属性等于“localhost”时,会导致以下XML配置:


... 做点什么
Mule将查找名为“localhost”的流变量或会话变量,这可能不是您想要的

试试这个:

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

... 做点什么
制作
表达式=“'localhost'='${environment}'”
威尔解决了这个问题。在Expression中,右侧需要另一个字符串进行比较,但在您的代码中,它将转换为“'localhost'==localhost,因为它无法解析localhost,即赋值运算符的右侧,它会抛出错误

。不幸的是,当我尝试此操作时,我会出现以下错误:根异常堆栈跟踪:[错误:无法解析的属性或标识符:localhost][Near:{…'localhost'.equals(localhost)…}]环绕${environment}用单引号解决了这个问题。是的,我的错,正如Ryan所解释的,占位符只是替换值,而当mel解释时,它没有“”,这将表明您引用的是一个变量名。很高兴它能工作;)
<choice doc:name="Choice">
    <when expression="'localhost' == localhost">
       ... Do something
    </when>
<choice doc:name="Choice">
    <when expression="'localhost' == '${environment}'">
       ... Do something
    </when>