我的属性文件值是:
companies = test
companies1 =
companies2 = 'another'现在,如果我有像下面这样的MEL验证不起作用的话。
<choice doc:name = "PageNum-1">
<when expression = "#[ ${companies} != '' ]">
<logger message = "===== Nothing to execute in process 1 ===" level="INFO" doc:name = "Logger"/>
</when>
<otherwise>
<logger message = "===== Nothing to execute in process 0 ===" level="INFO" doc:name = "Logger"/>
</otherwise>
</choice>错误:
Exception stack is:
1. [Error: illegal use of operator: !=]
[Near : {... !='' ....}]
^
[Line: 1, Column: 1] (org.mule.mvel2.CompileException)编辑:
作为解决方案,我添加了一个流变量,并将表达式中的数据验证为
<set-variable variableName = "company1" value = "${companies1}" doc:name = "company1"/>
<when expression = "#[flowVars.company1.isEmpty()]">但是,是否有更简单的方法只使用$ as {commpany1}
发布于 2015-03-18 18:29:17
<set-variable variableName="company1" value="${companies1}" doc:name="company1"/>
<when expression="#[flowVars.company1.isEmpty()]">发布于 2015-01-31 01:13:43
您的问题与如何替换属性有关。它们是一个接一个地被取代的,所以如果你不像你在companies2那样,与房地产价值公司联系在一起,它就行不通了。
此外,在#[]属性中不需要使用expression。以下几点对我是有帮助的:
<context:property-placeholder location="myprop.properties" />
<flow name="test-http">
<http:inbound-endpoint host="127.0.0.1" port="8081"
doc:name="HTTP" />
<choice doc:name="PageNum-1">
<when expression="${companies}!=''">
<logger message="===== Nothing to execute in process 1 ==="
level="INFO" doc:name="Logger" />
</when>
<otherwise>
<logger message="===== Nothing to execute in process 0 ==="
level="INFO" doc:name="Logger" />
</otherwise>
</choice>
</flow>发布于 2015-01-31 08:57:04
如果您希望MEL将属性值作为字符串处理,则应该在表达式或属性文件中添加引号,而不是在两个位置添加引号,或者像您所做的那样添加一个混合引用。因此,若要测试您可以使用的文件中的属性${companies}是否为空,请执行以下操作。
<when expression="'${companies}' != empty" >在属性被解决后,这将变成
<when expression="'' != empty" >当属性文件包含
companies=它就会变成
<when expression="'Acme Inc' != empty" >当属性文件包含
companies=Acme Inc但是,如果属性文件包含
companies='Snake Oil Ltd'结果将是
<when expression="''Snake Oil Ltd'' != empty" >这将生成一个错误,因此在这种情况下,属性文件中不应该有引号。
如果您要求属性包含一个单引号,一个选项必须是对表达式属性使用单引号,并使用double包围字符串值。
<when expression='"${companies}" != empty' >这是完全兼容的XML,并在运行时按预期工作,但是Anypoint Studio编辑器会将其标记为错误(即使不是),因此由于Anypoint Studio中的这个bug,我建议您使用找到的解决方法,将属性加载到流变量中,然后在表达式中使用它。
https://stackoverflow.com/questions/28246284
复制相似问题