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

时间:2016-01-08 11:49:49

标签: mvel

假设我写了这样的代码:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

请记住,如上所述,boolean boolVar成为局部变量,而MVEL也无法编译它。

1。)需要传递类对象。

2。)在课堂上创建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