在java中验证MVEL表达式

时间:2015-12-11 11:13:02

标签: java mvel

用户将输入一些公式/表达式。

我想检查作为我的函数的String输入的公式/表达式是否正确(根据MVEL标准)。

以下是有效的表达式

String validFormula = "if(dueDate > "2015-12-12") {a*b} else {a+b}";

以下是不正确的表达,

String invalidFormula = "if(dueDate > 2015-12-12) {a*b} else {a+b}";
 //Quotes are missing for date

以下是代码段,

public Formula save(String formula)
{
    // want to call MVEL api to check if formula/expression is valid or not
    ...
}

MVEL是否提供接受表达式String的api,如果表达式不正确则返回boolean / throw异常?

1 个答案:

答案 0 :(得分:2)

您可以使用

验证表达式
Serializable compiledFormula = MVEL.compileExpression(validFormula);
Serializable compiledFormula = MVEL.compileExpression(invalidFormula);

如果无效,则会导致org.mvel2.CompileException

这适用于mvel 2.2.6,无法保证API兼容性或与旧版本库的功能。

另请注意,在您的情况下,两个表达式都是有效的,因为MVEL不知道duedate变量的数据类型,只有在运行时才会知道,当您实际执行表达式时。希望这会有所帮助...