我已经定义了一个全局函数,如下所示
<configuration doc:name="Configuration">
<expression-language autoResolveVariables="true">
<import class="java.text.SimpleDateFormat" />
<global-functions>
def convertDate(shiftDate){
dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return dateFormat.format(shiftDate);
}
</global-functions>
</expression-language>
</configuration>
但是当通过logger调用时似乎没有任何事情发生
<logger message="Convert Date #[convertDate(xpath://address/@timestamp)]" level="DEBUG" doc:name="Logger"/>
xpath表达式xpath://地址/ @时间戳产生2014-10-29T15:23:07
但在记录器之前,我看到了
xpath-branch:/ address / @timestamp是:org.dom4j.tree.DefaultAttribute@6452310a [属性:名称时间戳值&#34; 2014-10-29T15:23:07&#34;]
错误信息如下
org.mule.api.expression.InvalidExpressionException: [Error: unexpected end of statement]
[Near : {... convertDate(xpath://address/@payloadID) ....}]
我在这里做错了什么?非常感谢。
答案 0 :(得分:0)
你正在混合MEL和旧式的表达方式。
这是旧式:xpath://address/@payloadID
这是MEL:xpath('//address/@payloadID').value
所以你需要使用:
<logger
message="Convert Date #[convertDate(xpath('//address/@payloadID').value)]"
level="DEBUG" />