簡體   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