| | |
| | | import javax.script.Invocable; |
| | | import javax.script.ScriptEngine; |
| | | import javax.script.ScriptEngineManager; |
| | | import java.io.File; |
| | | import java.io.FileReader; |
| | | |
| | | /** |
| | | * JS帮助类 |
| | |
| | | /** |
| | | * 调用JS方法 |
| | | */ |
| | | public Object callJsFn() { |
| | | public static Object callJsFn(String jsFile, String function, String str) { |
| | | try { |
| | | // 创建 JavaScript 引擎管理器 |
| | | ScriptEngineManager manager = new ScriptEngineManager(); |
| | | |
| | | // 获取 JavaScript 引擎 |
| | | ScriptEngine engine = manager.getEngineByName("javascript"); |
| | | |
| | | // 定义要执行的 JavaScript 脚本 |
| | | String script = "function addNumbers(a, b){ return a + b; }"; |
| | | File f = new File(jsFile); |
| | | if (!f.exists() || f.isDirectory()) { |
| | | return null; |
| | | } |
| | | |
| | | FileReader reader = new FileReader(f); |
| | | // 编译并运行 JavaScript 脚本 |
| | | engine.eval(script); |
| | | engine.eval(reader); |
| | | |
| | | // 调用 JavaScript 函数 |
| | | Invocable invocable = (Invocable) engine; |
| | | Object obj = invocable.invokeFunction("addNumbers", 2, 3); |
| | | |
| | | return obj; |
| | | return invocable.invokeFunction(function, str); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | return null; |