我有一个共同的功能,可供多个数据编辑转换使用,所以我想把它写成MEL全局函数。
我配置了我的全局函数文件 -
<configuration doc:name="Configuration">
<expression-language>
<import class="org.apache.commons.lang3.StringUtils"></import>
<global-functions file="global_expressions.mvel">
</global-functions>
</expression-language>
</configuration>
然后我有一个global_expressions.mvel文件,我想要一个像 -
这样的函数def filterE1Records(route,type){
if(type == 'COR'){
return (route >= '${min.route}' and route <= '${max.route}');
} else if(type == 'NONCOR'){
return ((route >= '${min.route}' and route <= '${max.route}') == false and route != '${ndsin.route}');
} else if(type == 'NDS'){
return route == '${ndsin.route}';
} else {
return false;
}
}
带有属性占位符的上述函数不起作用,即没有任何记录通过。但如果我硬编码值,那么我会看到记录按预期过滤 -
def filterE1Records(route,type){
if(type == 'COR'){
return (route >= 10000 and route <= 15000);
} else if(type == 'NONCOR'){
return ((route >= 10000 and route <= 15000) == false and route != 15001);
} else if(type == 'NDS'){
return route == 15001;
} else {
return false;
}
}
如果我删除单引号&#39;在属性周围使其成为数字,然后DW代码在运行时失败。
知道如何进行这种比较吗?
感谢。
答案 0 :(得分:0)
根据评论中的讨论,我将假设属性解析在导入的MEL文件中不起作用。
您可以通过Spring setter注入在bean中加载这些不同的属性,或者使用Spring的实用程序在java.util.Properties
对象中加载这些不同的属性,然后查找它们:
app.registry.myConfigBean.minRoute
或:
app.registry.myConfigProperties['min.route']