首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转换JEXL表达式的类型?

如何转换JEXL表达式的类型?
EN

Stack Overflow用户
提问于 2020-12-28 09:49:00
回答 1查看 678关注 0票数 1

我使用JEXL表达式,这样用户就可以在运行时指定表达式,我的应用程序将相应地处理它们。现在,作为特例,用户希望比较浮点值,但是在JEXL上下文中,这些变量包含像"6.8“这样的字符串。JEXL引擎抱怨它无法处理字符串和数字。到目前一切尚好。

然而,在https://commons.apache.org/proper/commons-jexl/reference/syntax.html中,我看不到任何类型转换的提示。

是否有将字符串转换为在表达式中浮动的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-28 10:21:45

所以我找到了一种使用函数命名空间来解决这个问题的方法(参见https://commons.apache.org/proper/commons-jexl/reference/syntax.html#Functions)。因为这方面的文档似乎很少,我正在张贴解决方案。

使用通过名称空间添加的附加函数创建JexlEngine。

代码语言:javascript
复制
    Map<String, Object> namespace = new TreeMap<>();
    namespace.put("float", Float.class);
        
    JexlBuilder builder = new JexlBuilder();
    builder.silent(false);
    builder.strict(true);
    builder.namespaces(namespace);
    JexlEngine engine = builder.create();

有了这个,您将能够处理以下表达式

代码语言:javascript
复制
float:parseFloat("10") > 8

因此,类型转换现在可以在公式中进行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65475716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档