我正在使用 jdk11,graal.js 脚本引擎。
我们得到两个 json 字符串消息,一个有规则/条件(jsRules),另一个有消息。如果 message 中的值满足 jsRules 中的条件,则它应该评估为 1 else 0 。
因此,例如在下面的代码中,字符串“消息”code: CU_USER
因此具有 jsRules 条件
header.code == 'CU_USER'
应该已经满足,因此下面的 eval 应该打印 1 ,但它给出了 0。请解释导致这种行为的原因以及如何获得所需的行为?.
public static void process()
{
int eval =-2 ;
String jsRules = "{(header.code == 'CU_USER' || header.subcode == 'SD_CODE')?1:0}";
String message = "{code:'CU_USER'}";
ScriptEngine graalEngine = new ScriptEngineManager().getEngineByName("Graal.js");
//graalEngine.put("header",message);
try {
graalEngine.eval("var header = unescape(" + message + ")");
eval = (int)graalEngine.eval(jsRules);
System.out.println("Eval value:: "+eval);
} catch (ScriptException e) {
e.printStackTrace();
}
}