[英]How can I expose constant values in MVEL?
我有一個要導入/暴露給MVEL表達式的常量:
public static final String PRODUCT_NAME;
我知道我可以使用addImport導入類,包和靜態方法,但是不支持常量。
我看過編寫自定義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);
我不知道MVEL,但是如果您說可以導入靜態方法,則應該可以這樣做:
public static final String PRODUCT_NAME = "My cool product";
public static final String getProductName() {
return PRODUCT_NAME;
}
我自己對MVEL非常陌生。 但是我認為這應該可行。
我可能誤解了你的疑問。 我假設您正在尋找一種訪問常量的方法。
Java端聲明:
public class Product{
public static final String PRODUCT_NAME = "TEST";
}
在規則文件中:
import org.sample.Product;
rule "Test"
no-loop true
lock-on-active true
when
eval(true);
then
System.out.println(Product.PRODUCT_NAME); #prints TEST
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.