如何访问在 MVEL 表达式中声明的变量?

How to access a variable declared inside a MVEL expression?

假设我写了这样的代码:

public class SomeClass() {
  public static void main(String[] args) {
     MVEL.eval("boolean boolVar = 2<3;");
  }
}

现在可以在任何地方访问 Java 代码中的这个 boolVar 变量。 示例:我可以使用

打印 boolVar 的值吗
System.out.print(boolVar);

在 MVEL 行下方的主要方法中。

记得按上面的方法做,boolean boolVar变成局部变量,MVEL也编译不了

1.) 需要传递class对象。

2.) 在class中创建boolean属性,并赋值给它。

要评估的表达式:MVEL.eval("obj.output = 2<3;", map);

请尝试以下代码:-

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

import org.mvel2.MVEL;

public class SomeClass {

    private boolean output;

    public boolean isOutput() {
        return output;
    }

    public void setOutput(boolean output) {
        this.output = output;
    }

    public static void main(String[] args) {
        SomeClass myObj = new SomeClass();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("obj", myObj);

        MVEL.eval("obj.output = 2<3;", map);
        System.out.println(myObj.isOutput());

        MVEL.eval("obj.output = 2>3;", map);
        System.out.println(myObj.isOutput());

    }
}

输出

true
false