java - 使用 Java Nashorn 引擎仅验证 javascript

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

Nashorn 抛出异常,指出 findFieldValuefield 均未定义,这是正确的。 我不需要这种验证。我需要的只是验证语法,就像 Esprima JS API 所做的那样

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

我的问题是。我可以使用 Nashorn 忽略语义验证,仅验证语法吗?

谢谢!

最佳答案

您正在使用eval()正如您可能猜到的那样,它尝试评估表达式。

NashornScriptEngine实现javax.script.Compilable所以它提供了 compile()方法。要使用它,您必须转换 engineNashornScriptEngine ,如

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

您会得到 ScriptException如果编译失败。

关于java - 使用 Java Nashorn 引擎仅验证 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677545/

相关文章:

c++ - 转换为模板类型

c++ - 无法在类中前向声明类

bash - 如何在Docker Compose中有条件地运行命令

java - Android Activity 下载文件

java - 标签库和变量声明在源页面顶部生成空行

java - 如何从表中检索行并将该值设置为 json 数组并获取该 json 数组作为返回值

java - 如何将多个 JPanel 添加到 JScrollPane 中?

validation - 如何验证字符串 slice

javascript - 我想在提交空白时看到表单验证消息

c# - USPS 地址验证 API 中的授权失败