我有一个常量想要导入/公开给 MVEL表达式:
public static final String PRODUCT_NAME;
我知道我可以使用 addImport 导入类、包和静态方法,但不支持常量。
我考虑过写一个custom VariableResolver但这看起来有点矫枉过正。有没有更简单的方法来做到这一点?
[编辑]要明确的是,我希望能够在我的表达式中执行此操作:
"Thanks for using " + PRODUCT_NAME
最佳答案
您可以使用完全限定名称直接引用它:org.foo.Bar.PRODUCT_NAME
-或-
您可以使用 MVEL 编译器以编程方式导入:
ParserContext ctx = ParserContext.create();
ctx.addImport(YourClass.class);
String expr = "YourClass.PRODUCT_NAME";
Serializable compiled = MVEL.compileExpreasion(expr, ctx);
Object result = MVEL.executeExpression(compiled);
关于java - 如何在 MVEL 中公开常量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791022/