Mule ESB 中的选择流控制组件失败
Choice flow control component fails in Mule ESB
我有一个使用如下表达式的选择流控制组件:
<choice>
<when expression="${LoggingFlag} == YES">SOME CODE</when>
<otherwise>SOME OTHER CODE</otherwise>
</choice>
这里使用的LoggingFlag是app.properties文件中定义的键值对
LoggingFlag=NO
当我 运行 代码时,我看到以下错误:
Execution of the expression "NO == YES" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String
Exception stack is:
1. [Error: unresolvable property or identifier: NO]
[Near : {... NO == YES ....}]
谁能告诉我这个问题背后的原因是什么?
您需要将 when 表达式中的变量用单引号 ' ' 括起来
<choice doc:name="Choice">
<when expression="'${LoggingFlag}' == 'YES'"><set-payload value="payload 1" doc:name="Set Payload"/></when>
<otherwise><set-payload value="payload 2" doc:name="Set Payload"/></otherwise>
</choice>
发生此错误是由于 Mule 无法解析值的类型,在选择时将其设置为 LoggingFlag。
为此,您需要明确地将类型更改为字符串,以便 Mule 可以轻松地比较两者。
为此,您需要使用:
<choice>
<when expression="'${LoggingFlag}' == 'YES'">SOME CODE</when>
<otherwise>SOME OTHER CODE</otherwise>
</choice>
您甚至可以尝试读取 属性 值并将其存储在变量中,然后将变量值与选择组件中的字符串进行比较,如下所示:
<set-variable variableName="SetLoggingFlag" value="${LoggingFlag}" doc:name="SetLoggingFlag"/>
<choice>
<when expression="#[flowVars.SetLoggingFlag=='YES']">SOME CODE</when>
<otherwise>SOME OTHER CODE</otherwise>
</choice>
希望对您有所帮助!
我有一个使用如下表达式的选择流控制组件:
<choice>
<when expression="${LoggingFlag} == YES">SOME CODE</when>
<otherwise>SOME OTHER CODE</otherwise>
</choice>
这里使用的LoggingFlag是app.properties文件中定义的键值对
LoggingFlag=NO
当我 运行 代码时,我看到以下错误:
Execution of the expression "NO == YES" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: String
Exception stack is:
1. [Error: unresolvable property or identifier: NO]
[Near : {... NO == YES ....}]
谁能告诉我这个问题背后的原因是什么?
您需要将 when 表达式中的变量用单引号 ' ' 括起来
<choice doc:name="Choice">
<when expression="'${LoggingFlag}' == 'YES'"><set-payload value="payload 1" doc:name="Set Payload"/></when>
<otherwise><set-payload value="payload 2" doc:name="Set Payload"/></otherwise>
</choice>
发生此错误是由于 Mule 无法解析值的类型,在选择时将其设置为 LoggingFlag。 为此,您需要明确地将类型更改为字符串,以便 Mule 可以轻松地比较两者。 为此,您需要使用:
<choice>
<when expression="'${LoggingFlag}' == 'YES'">SOME CODE</when>
<otherwise>SOME OTHER CODE</otherwise>
</choice>
您甚至可以尝试读取 属性 值并将其存储在变量中,然后将变量值与选择组件中的字符串进行比较,如下所示:
<set-variable variableName="SetLoggingFlag" value="${LoggingFlag}" doc:name="SetLoggingFlag"/>
<choice>
<when expression="#[flowVars.SetLoggingFlag=='YES']">SOME CODE</when>
<otherwise>SOME OTHER CODE</otherwise>
</choice>
希望对您有所帮助!