2017-06-20 145 views
0

當我嘗試評估表達式時出現此錯誤:net.sourceforge.jeval.EvaluationException:引用無效。Jeval EvaluationException:無效使用引號

更清晰。我從.txt文件中讀取我的規則,然後將其放入hasmap中。

我曾嘗試:

#{mentor} = Chung 
#{mentor} = "Chung" 
#{mentor} == "Chung" 
#{mentor} == 'Chung' 

,但仍然給出了另一個錯誤,或者同樣的錯誤。

我在做什麼錯?

List<String> approvalMentors = new ArrayList<>(); 
Evaluator evaluator = new Evaluator(); 
evaluator.putVariable("mentor", String.valueOf(graduationApprovalRequest.getMentor())); 

for (HashMap.Entry<String, String> entry : this.schoolRules.entrySet()) { 
    try { 
     if(evaluator.evaluate(entry.getValue()).equals("1.0")){ 
      approvalMentors.add(entry.getKey()); 
     } 
    } catch (EvaluationException ex) { 
     Logger.getLogger(SchoolRules.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
return approvalMentors; 

的.txt文件I從

#{mentor} = 'Chung' 

回答

0

JEval內部驗證邏輯讀我的規則假定每個「操作數」(條件表達式的一部分)應該是一個內置的功能,一個數字,一個特殊符號,或一個帶引號的字符串。如果在==和雙引號符號之間甚至有一個SPACE,則檢查引用字符串的正確性將失敗。每個這樣的操作數應該以一個報價開始和結束,或根本沒有報價。例如,後者就是數字的情況。