1

MVEL式にインポート/公開したい定数があります。

public static final String PRODUCT_NAME;

addImportを使用してクラス、パッケージ、静的メソッドをインポートできることは知っていますが、定数はサポートされていません。

カスタムVariableResolverの作成を検討しましたが、やり過ぎのようです。これを行う簡単な方法はありますか?

[編集]明確にするために、私は自分の表現でこれを実行できるようにしたいと思います。

"Thanks for using " + PRODUCT_NAME
4

3 に答える 3

2

完全修飾名を使用して直接参照できます。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);
于 2011-04-28T04:17:55.903 に答える
0

私はMVELを知りませんが、静的メソッドをインポートできると言うなら、代わりにこれを行うことができるはずです:

public static final String PRODUCT_NAME = "My cool product";
public static final String getProductName() {
   return PRODUCT_NAME;
}
于 2011-04-26T13:30:25.757 に答える
-1

私は 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
于 2011-04-26T15:20:26.957 に答える