2015-11-25 53 views
0

失敗我有一個使用的表達式如下選擇流動控制部件:選擇流動控制部件在騾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 ....}] 

有人能告訴我什麼是這背後的問題的原因是什麼?

回答

2

這個誤差範圍內的表達發生在變量由於騾子不能夠解決的值的類型,而在選擇比較其設置爲LoggingFlag。 爲此,您需要明確將類型更改爲字符串,以便Mule可以輕鬆地比較兩者。 對於您需要使用:

<choice> <when expression="'${LoggingFlag}' == 'YES'">SOME CODE</when> <otherwise>SOME OTHER CODE</otherwise> </choice>

+0

謝謝。這樣可行 。 –

0

您需要附上當單引號「」

<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> 
+0

是的。它現在有效。謝謝 –

0

你甚至可以通過讀取屬性值,並將其存儲在一個變量,然後在字符串中選擇組件比較變量值嘗試如下:

<set-variable variableName="SetLoggingFlag" value="${LoggingFlag}" doc:name="SetLoggingFlag"/> 
<choice> 
<when expression="#[flowVars.SetLoggingFlag=='YES']">SOME CODE</when> 
<otherwise>SOME OTHER CODE</otherwise> 
</choice> 

希望這可以幫助你!