yihaisang 2021-02-20 09:55 采纳率: 100%
浏览 68
已结题

javax.script 中 js 函数如何 复用

在编写javax.script运行的js 时

(我只有权限写js 没有权限改java中的代码)

我在js中get某个http api  但是代码太多了

导致每一个js 就要写很多 代码

 

如何把能快速请求http api呢

(可以封装函数 复用吗)

 

 

 

  • 写回答

2条回答 默认 最新

  • 夹娃小能手 2021-02-20 14:47
    关注

    针对document无法使用的问题, 如下测试了一下,完美通过,不过需要后台改一下加载js的方法,改成多个js合并成一个字符串。

    java 代码 

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    
    import javax.script.Invocable;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    public class Test {
    	
    	
    	public static void main(String[] arg) throws IOException {
    		ScriptEngineManager maneger = new ScriptEngineManager();
    		ScriptEngine engine = maneger.getEngineByName("JavaScript");
    		String script = getScript("A.js","B.js");
    		System.out.println("完整js脚本:" + script);
    		if (engine != null) {
    			try {
    				// JS引擎解析文件
    				engine.eval(script);
    				if (engine instanceof Invocable) {
    					Invocable invocable = (Invocable) engine;
    					// JS引擎调用方法
    					Object result = invocable.invokeFunction("call");
    					System.out.println("返回值 : " + result);
    				}
    			} catch (ScriptException e) {
    				e.printStackTrace();
    			} catch (NoSuchMethodException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	
    	public static String getScript(String... scripts) throws IOException {
    		StringBuffer buffer = new StringBuffer();
    		for (int i = 0; i < scripts.length; i++) {
    			BufferedReader bf = new BufferedReader(new InputStreamReader(Test.class.getResourceAsStream(scripts[i])));
    			String s = null;
    			while ((s = bf.readLine()) != null) {
    				buffer.append(s.trim());
    			}
    			bf.close();
    		}
    		String scriptstr = buffer.toString();
    		return scriptstr;
    	}
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日

悬赏问题

  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”