使用Java犀牛引擎仅验证JavaScript

问题描述 投票:0回答:1

早上好。

我需要运行通过Java JavaScript语法验证,但我在努力寻找最佳的解决方案。

我做了一些测试与犀牛使用以下方法:

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());
}

犀牛抛出一个异常,说既findFieldValue和现场是不确定的,这是正确的。我不需要这种验证。所有我需要的是验证语法,就像它是由Esprima JS API完成

http://esprima.org/demo/validate.html

我的问题是。我可以忽略语义验证与犀牛,只验证语法?

谢谢!

java validation syntax nashorn
1个回答
2
投票

您正在使用eval(),正如你可能已经猜到了,试图计算表达式。

所述NashornScriptEngine实现javax.script.Compilable因此它提供了一种方法compile()。要使用它,你将不得不投engineNashornScriptEngine,如

NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn");

你得到一个ScriptException如果编译失败。

© www.soinside.com 2019 - 2024. All rights reserved.