0

我正在使用 MVEL 来执行一个数学公式的表达式。表达式是这种格式

10 * 可用SI

我有一个 DataObject,它有 availableSI 作为参数,它有它的 getter 和 setter。

当我说 MVEL.eval(expression,DataObject) 时,它通过从数据对象中查找 availableSI 的值来执行表达式并返回最终结果

但是,我需要具有 availableSI 运行时值的表达式(如果avaiableSI 为 1000),10 * 1000

需要帮忙。

4

1 回答 1

0

在构造函数中调用您的函数以检索动态值。

public class Rules extends SimpleVariableResolverFactory
{    
    public Rules()
    {
            super(new HashMap());
            String newValue = callToYourFunction();
            super.createVariable("availableSI" , newValue);
    } 

    public static void main(String[] argv)
    {
          Rules arf = new Rules();
          String expression="avaiableSI * 10"; //Your expression
          Serializable compiledExpression = MVEL
                            .compileExpression(expression);

          System.out.println(expression + " == "
                            + MVEL.executeExpression(compiledExpression, arf)
    }
}
于 2012-09-24T13:52:00.713 回答