繁体   English   中英

Jexl执行动态字符串转换

[英]Jexl perform dynamic string transformation

我正在建立一个评估员,下面使用JEXL。 我知道如何在Jexl中引入工作区,但是只允许类定义,我需要定义一个方法定义。 在下面的示例中,为了访问Math的日志功能,我必须将其添加到函数上下文中。 我希望能够评估表达式:“log(5)”即不使用限定符。

Map<String, Object> funcs = new HashMap<String, Object>();
funcs.put("math", Math.class);

JexlEngine jexl = new JexlBuilder().namespaces(funcs).create();
JexlExpression je = jexl.createExpression("math:log(5)");
je.evaluate();

如果Math是函数的唯一来源,则可以使用'null'命名空间。

Map<String, Object> funcs = new HashMap<String, Object>();
funcs.put(null, Math.class);
JexlEngine jexl = new JexlBuilder().namespaces(funcs).create();
JexlExpression je = jexl.createExpression("log(5)");
Object result = je.evaluate(null);
Assert.assertNotNull(result);

如果您需要的不仅仅是Math作为源,我担心您必须创建自己的类,将每个方法委托给其源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM