我使用JEXL表达式,这样用户就可以在运行时指定表达式,我的应用程序将相应地处理它们。现在,作为特例,用户希望比较浮点值,但是在JEXL上下文中,这些变量包含像"6.8“这样的字符串。JEXL引擎抱怨它无法处理字符串和数字。到目前一切尚好。
然而,在https://commons.apache.org/proper/commons-jexl/reference/syntax.html中,我看不到任何类型转换的提示。
是否有将字符串转换为在表达式中浮动的方法?
发布于 2020-12-28 10:21:45
所以我找到了一种使用函数命名空间来解决这个问题的方法(参见https://commons.apache.org/proper/commons-jexl/reference/syntax.html#Functions)。因为这方面的文档似乎很少,我正在张贴解决方案。
使用通过名称空间添加的附加函数创建JexlEngine。
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();有了这个,您将能够处理以下表达式
float:parseFloat("10") > 8因此,类型转换现在可以在公式中进行。
https://stackoverflow.com/questions/65475716
复制相似问题