如何访问在 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
假设我写了这样的代码:
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