早上好。
我需要通过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());
}
Nashorn引发异常,指出findFieldValue和field均未定义,这是正确的。我不需要这种验证。我需要做的就是验证语法,就像Esprima JS API所做的一样
http://esprima.org/demo/validate.html
我的问题是。我可以忽略Nashorn的语义验证,仅验证语法吗?
谢谢!
您eval()
可能会猜到,您正在使用哪种方法尝试对表达式求值。
的NashornScriptEngine
器具javax.script.Compilable
,从而它提供了一种compile()
方法。要使用它,您必须转换engine
为NashornScriptEngine
,如
NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn");
ScriptException
如果编译失败,您将得到一个提示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句