Mule MEL使用差异
Mule MEL usage difference
我一直在使用不同形式的 Mule 表达式语言。
我无法弄清楚
之间的区别
#[flowVars.myVariable]
和
#[flowVars['myVariable']]
他们都是在有变量的情况下给出结果。但是为什么当变量不存在时它们的行为不同?
就像如果被调用的变量不可用,那么第一个表达式将导致异常。而第二个表达式只是发出警告或按原样打印出来,如果在记录器消息中。
为什么会有这种差异?
另外,在查看 Mule 3.6 的文档时,我发现文档中不再显示第二个表达式。
表达式#[flowVars[[=26=]]] 是否已弃用?
区别在于 MVEL 处理这两种不同的映射条目访问方式的方式。
#[flowVars['myVariable']]
等同于 flowVars.get('myVariable')
,如果 flowVars
映射不包含 'myVariable'
条目,则不会失败,
#[flowVars.myVariable]
将 flowVars
映射视为虚拟对象,如果缺少 'myVariable'
条目会导致异常,因为在这种情况下它不会解析为映射 get
而是直接使用对象成员(字段或方法),该成员在访问之前必须存在。
我认为 #[flowVars['myVariable']]
不会被弃用,因为它是 MVEL 提供的核心功能。
参考:http://mvel.codehaus.org/MVEL+2.0+Property+Navigation#MVEL2.0PropertyNavigation-MapAccess
大卫对你的问题给出了很好的解释。为了扩展该解释,我想补充一点,您可以使用 #[flowVars.?myVariable] 使您的代码空值安全。这相当于#[flowVars[[=17=]]]。
关于#[header:originalFilename],正如大卫所说,这不是 MEL。您可以在以下 link.
中获得 Mule 应用程序中常用的非 mel 表达式列表
http://www.mulesoft.org/documentation/display/current/Non-MEL+Expressions+Configuration+Reference
我一直在使用不同形式的 Mule 表达式语言。 我无法弄清楚
之间的区别#[flowVars.myVariable]
和
#[flowVars['myVariable']]
他们都是在有变量的情况下给出结果。但是为什么当变量不存在时它们的行为不同?
就像如果被调用的变量不可用,那么第一个表达式将导致异常。而第二个表达式只是发出警告或按原样打印出来,如果在记录器消息中。
为什么会有这种差异?
另外,在查看 Mule 3.6 的文档时,我发现文档中不再显示第二个表达式。
表达式#[flowVars[[=26=]]] 是否已弃用?
区别在于 MVEL 处理这两种不同的映射条目访问方式的方式。
#[flowVars['myVariable']]
等同于flowVars.get('myVariable')
,如果flowVars
映射不包含'myVariable'
条目,则不会失败,#[flowVars.myVariable]
将flowVars
映射视为虚拟对象,如果缺少'myVariable'
条目会导致异常,因为在这种情况下它不会解析为映射get
而是直接使用对象成员(字段或方法),该成员在访问之前必须存在。
我认为 #[flowVars['myVariable']]
不会被弃用,因为它是 MVEL 提供的核心功能。
参考:http://mvel.codehaus.org/MVEL+2.0+Property+Navigation#MVEL2.0PropertyNavigation-MapAccess
大卫对你的问题给出了很好的解释。为了扩展该解释,我想补充一点,您可以使用 #[flowVars.?myVariable] 使您的代码空值安全。这相当于#[flowVars[[=17=]]]。
关于#[header:originalFilename],正如大卫所说,这不是 MEL。您可以在以下 link.
中获得 Mule 应用程序中常用的非 mel 表达式列表http://www.mulesoft.org/documentation/display/current/Non-MEL+Expressions+Configuration+Reference