我遇到了mule中一个groovy评估器的问题,它从消息中获取一个调用属性,如果它为null则为chekcs。代码是:
<when expression="#[groovy: (message.getInvocationProperty('firstName', null) != null)]">
这引发了#34;
1.key can not be empty (java.lang.IllegalArgumentException)
javax.script.SimpleBindings:-1 (null)
2. key can not be empty (java.lang.IllegalArgumentException). Message payload is of type: String (org.mule.api.MessagingException)
org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor:32(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
此时我知道firstName属性确实为null - 它没有在消息中设置,但是不应该getInvocationProperty(&#39; firstName&#39;,null)将属性设置为null作为默认值它没有设置?
任何想法如何解决这个问题?
由于
答案 0 :(得分:0)
尝试使用此选项:
<flow name="loan-broker">
<http:inbound-endpoint host="127.0.0.1" port="8080" path="in" exchange-pattern="request-response"/>
<set-variable variableName="prop" value="value" />
<choice>
<when expression="#[flowVars['prop'] != null]" >
<set-payload value="#['prop: ' + flowVars['prop']]"/>
</when>
<otherwise>
<set-payload value="Houston, we have a problem."/>
</otherwise>
</choice>
</flow>
使用以下方式调用:
curl http://127.0.0.1:8080/in
你应该得到值
答案 1 :(得分:0)
我终于通过升级mule和使用MEL来解决这个问题。所以表达式现在看起来像这样。
<when expression="#[flowVars.firstName != empty]">
'flowVars'存储流中分配的所有调用属性和变量,如果已通过
调用流<flow-ref />
调用者流程中设置的所有变量都可以通过'flowVars'获得。
答案 2 :(得分:0)
我有同样的问题,用以下表达式解决:
<set-variable variableName="firstName" value="${fname}" doc:name="Variable"/>
<when expression="#[flowVars.firstName.isEmpty()]">
<logger message="===== If ===" level="INFO" doc:name="Logger"/>
</when>
<otherwise>
<logger message="===== Else ===" level=" INFO" doc:name="Logger"/>
</otherwise>