如果使用的上下文将键作为字母数字,则 MVEL2 无法计算表达式

问题描述

我正在尝试将格式表达式评估为

"( 13d9368d158208ca4a9e30357bcf3aa20df7b1896cc851d61a2e22e5748e1aa6 == 'joy' && ( c2b3267625dd3513d6beccb7cce3c9602c6f605a26b93e9c519899211a10cda6 == 'joy' && 4e8c53498baba80ede9b852558ef6c71db8c65b1cb8d6bab731536da30157b27 == 'joy' ))"

我也为此创建了一个上下文

Map<String,Object> context = new HashMap<String,Object>();
context.put("13d9368d158208ca4a9e30357bcf3aa20df7b1896cc851d61a2e22e5748e1aa6","joy");
context.put("c2b3267625dd3513d6beccb7cce3c9602c6f605a26b93e9c519899211a10cda6","joy");
context.put("4e8c53498baba80ede9b852558ef6c71db8c65b1cb8d6bab731536da30157b27","joy");

当我执行 Boolean result = (Boolean) MVEL.eval(expression,context) 时,我收到以下错误消息

线程“main”中的异常[错误:无效数字文字:13d9368d158208ca4a9e30357bcf3aa20df7b1896cc851d61a2e22e5748e1aa6] [近:{... ab731536da30157b27 == '欢乐' ) ....}]

整个代码

import java.util.HashMap;
import java.util.Map;

import org.mvel2.MVEL;
import org.mvel2.ParserContext;

public class Test {
    public static void main(String[] args) {
        Map<String,Object>();
        context.put("13d9368d158208ca4a9e30357bcf3aa20df7b1896cc851d61a2e22e5748e1aa6","joy");
        context.put("c2b3267625dd3513d6beccb7cce3c9602c6f605a26b93e9c519899211a10cda6","joy");
        context.put("4e8c53498baba80ede9b852558ef6c71db8c65b1cb8d6bab731536da30157b27","joy");
        String expression = "( 13d9368d158208ca4a9e30357bcf3aa20df7b1896cc851d61a2e22e5748e1aa6 == 'joy' && ( c2b3267625dd3513d6beccb7cce3c9602c6f605a26b93e9c519899211a10cda6 == 'joy' && 4e8c53498baba80ede9b852558ef6c71db8c65b1cb8d6bab731536da30157b27 == 'joy' ))";
        Boolean result = (Boolean) MVEL.eval(expression,context);
        System.out.println(result);
    }
}

我是 MVEL 的新手,所以任何指示都会有很大帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)