我有一个要导入/暴露给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/

10-11 04:47