我尝试了很多方法,但似乎jexl不能很好地处理集合和lambda表达式。本质上,我有一个json对象列表,我想在jexl上下文中设置一个自定义的实用函数,以便表达式为"filter(collections, 'a -> a.age > 10')"
,而集合是一个Person列表。(姓名,年龄)对象,filter是自定义函数,用于在'a-> a.age > 10”时,用编码语言实现类似的过滤逻辑。是条件子句。但现在无论我多么努力,似乎jexl总是有问题解析'a -> a.age > 10”,因为这是lambda。我得到了解析错误或未定义变量错误到一个点,不确定是否有人实现了在jexl中编写与集合相关的自定义函数
试图让一个函数接受集合,字符串或条件子句不起作用。结果总是在未定义的变量或jexl分析错误。
1条答案
按热度按时间blpfk2vs1#
JEXL需要一些配置和定制来适应任何用例。为了允许集合(或流)通过表达式过滤,StreamTest.java中有一个例子;看看CollectionContext和testURICollection,这应该会为您指明正确的方向。
注意,在JEXL 3.3中,默认情况下权限受到更多限制,需要正确定义才能使脚本正常运行。(请参阅JexlPermissions)
希望这对你有帮助。