当前位置: 首页 > 知识库问答 >
问题:

验证java中的MVEL表达式

柴增
2023-03-14

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

我想检查作为函数字符串输入的公式/表达式是否正确(根据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并在表达式不正确时返回布尔/抛出异常?

共有1个答案

赏星河
2023-03-14

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

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

这导致了org.mvel2。CompileExc0019如果无效。

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

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

 类似资料:
  • 问题内容: 给定一个用户输入字符串,如何确定它在Java中是否为有效的Xpath表达式。很好奇,因为我找不到使用javax.xml.xpath库的方法。谢谢。 问题答案: 我假设您要验证语法,但是如果表达式在xml或xml架构的上下文中有效,则不要验证。您可以使用compile(..)方法,如果xpath的语法不正确,它将引发异常。

  • 我正在使用石英调度程序来安排我的工作。我有一个错误的cron表达式: 当我这样做的时候: is。但是当我查看表达式时,它显然是错误的。其他人也面临类似的问题吗? 注:包装为:包装组织。石英 石英的版本是:2.2.3 请检查来自的CronExpression类http://www.javadoc.io/doc/org.quartz-scheduler/quartz/2.2.3 我还尝试了类的方法,但

  • null 为此,使用mvel语句实现了一个elastica脚本,以支持正则表达式匹配。换句话说,它检查左边的值是否与右边的正则表达式匹配(只有这样一个变量才会相应地递增)。但不幸的是,当搜索字符串是特定于语言的时,就会出错,尽管左边的值也是指定的语言。另一个需要处理的问题是我上面提到的第二种情况(无法使其工作)。 当一个值(“一个示例”(属于name字段))以给定的单词('one')开头时,脚本工

  • 问题内容: 我正在使用以下正则表达式 它接受#@#.com作为有效电子邮件。我应该使用什么模式? 问题答案: 您应该使用apache- commons电子邮件验证程序。您可以从此处获取jar文件。 这是一个简单的用法示例:

  • 问题内容: 我正在使用Quartz用Java编写调度应用程序。我正在使用CronTrigger,但是我的cron表达式在进行调度之前是先输入数据库的,并且是基于用户输入的。 捕获它们时,有什么方法可以验证cron表达式是否有效?我宁愿这样做并向用户提供适当的错误消息,而不是等到调度程序运行并且尝试创建触发器时得到ParseException。用户输入数据后可能要过几天。 问题答案: 您不能简单地创

  • 问题内容: 我正在尝试使用以下规则在Java中使用用户名链: 长度> = 3 有效字符:az,AZ,0-9,点,破折号和下划线。 有人可以帮我提供正则表达式吗? 问题答案: 试试这个正则表达式: