Fab*_*o K 0 java validation syntax nashorn
早上好。
我需要通过 java 运行 javascript 语法验证,但我正在努力寻找最佳解决方案。
我使用以下方法对 Nashorn 进行了一些测试:
try
{
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
Object retVal = engine.eval("findFieldValue(field);");
}
catch (ScriptException e)
{
response.put("status", "parseexception");
response.put("msg", e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
Nashorn 抛出一个异常,指出findFieldValue和field都未定义,这是正确的。我不需要这种验证。我需要的只是验证语法,就像 Esprima JS API 所做的那样
http://esprima.org/demo/validate.html
我的问题是。我可以使用 Nashorn 忽略语义验证,仅验证语法吗?
谢谢你!
eval()正如您可能猜到的那样,您正在使用which 尝试计算表达式。
实现NashornScriptEngine所以javax.script.Compilable它提供了一种compile()方法。要使用它,您必须强制转换engine为NashornScriptEngine,如
NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn");
Run Code Online (Sandbox Code Playgroud)
ScriptException如果编译失败,您会得到一个。