当我尝试计算表达式时,出现此错误:net.sourceforge.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 我从中读取规则的文件
#{mentor} = 'Chung'
JEval 内部验证逻辑假定每个"操作数"(条件表达式的一部分(应该是内置函数、数字、特殊符号或带引号的字符串。如果 == 和双引号符号之间只有一个空格,则检查带引号的字符串的正确性将失败。每个这样的操作数应该以引号开头和结尾,或者根本没有引号。例如,数字就是后者。