【发布时间】:2016-03-20 19:51:17
【问题描述】:
我有一个 Mule Expression Language 表达式:
<set-payload value="#[message.payload.hasNext() ? message.payload.next(): null]" doc:name="Set Payload"/>
<choice doc:name="Choice">
<when expression="#[message.payload != null]">
我正在尝试迭代 ConsumerIterator 并收到错误
Execution of the expression "message.payload.hasNext() ? message.payload.next(): null" failed. (org.mule.api.expression.ExpressionRuntimeException)
org.mule.el.mvel.MVELExpressionLanguage:202 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html)
6. Execution of the expression "message.payload.hasNext() ? message.payload.next(): null" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: ConsumerIterator (org.mule.api.transformer.TransformerMessagingException)
org.mule.transformer.AbstractTransformer:135 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerMessagingException.html)
我对此的解决方案是重写不带message. 前缀的代码:
<set-payload value="#[payload.hasNext() ? payload.next(): null]" doc:name="Set Payload"/>
<choice doc:name="Choice">
<when expression="#[payload is NullPayload]">
#[message.payload] 和#[payload] 有什么区别?
如果
payload是NullPayload的一个实例,为什么payload.hasNext()不抛出Exception?
根据我的阅读,最佳做法是使用#[message.payload] 而不是#[payload]。
我正在使用 Mule 3.6.2。
【问题讨论】:
标签: mule