繁体   English   中英

在Java中验证MVEL表达式

[英]Validate MVEL expression in java

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

我想检查作为函数输入的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是否提供任何api来接受表达式String并在表达式不正确时返回布尔值/抛出异常?

您可以使用以下方式验证表达式

Serializable compiledFormula = MVEL.compileExpression(validFormula);
Serializable compiledFormula = MVEL.compileExpression(invalidFormula);

如果无效,这将导致org.mvel2.CompileException

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM