java与js脚本的交互
脚本初始化
private ScriptEngineManager mgr = new ScriptEngineManager();ScriptEngine engineArr = new ScriptEngine;
从文件加载脚本,预编译,检查语法错误
String fileScript = "./cabtype.js";File fs = new File(fileScript);if (fs.exists()) {try {engineArr = mgr.getEngineByName("JavaScript");FileReader fr = new FileReader(fileScript);engineArr.eval(fr);logger.info("加载脚本 cabType = {} 成功!", i);} catch (Exception e) {logger.error("加载脚本 cabType = {} 失败!", i);}}
调用js脚本中的函数,js函数可以以数组的形式返回多个返回值
Invocable inv = (Invocable) engineArr;int i = 0;try {ScriptObjectMirror som = (ScriptObjectMirror) inv.invokeFunction(paramSymbol + "_fault", newVA);//调用JS函数if (som == null) {//TODO 代表无函数,可以不做处理} else if (som.isEmpty()) {logger.info("脚本执行返回空数组元素!");} else {//取数组中的返回值if (som.isArray() && som.size() >= 3) {String faultCode = som.get("0").toString();String faultValu = som.get("1").toString();String faultName = som.get("2").toString();} else {logger.error("NODEID:{}, 脚本返回的故障参数{}值不为3的倍数", sNodeId, obj.getParamSymbol());}}} catch (ScriptException e) {logger.error("NODEID:{}, FAULT脚本异常:{}", sNodeId, e.getMessage());} catch (NoSuchMethodException e) {logger.error("NODEID:{}, FAULT方法异常:{}", sNodeId, e.getMessage());} catch (Exception e) {logger.error("NODEID:{}, FAULT未知异常:{}", sNodeId, e.getMessage());}
js文件中的部分函数例子
//主路EEV 3 强制开
function f3_646_range ( projectId, cabId, js) {var minV = 0;var maxV = 500;return [6,646,0,500,0,"步"] ;
}function f3_646_write(value) {return [6, 646, value];
}
//主路EEV 4 强制开
function f3_647_show (value) {return [value, value+"步"] ;
}//主路EEV 4 强制开
function f3_647_range ( projectId, cabId, js) {var minV = 0;var maxV = 500;return [6,647,0,500,0,"步"] ;
}function f3_647_write(value) {return [6, 647, value];
}
//辅路EEV 3 强制开
function f3_648_show (value) {return [value, value+"步"] ;
}//辅路EEV 3 强制开
function f3_648_range ( projectId, cabId, js) {var minV = 0;var maxV = 500;return [6,648,0,500,0,"步"] ;
}
java与js脚本的交互相关推荐
- Java 执行 JS 脚本工具
Java 执行 JS 脚本工具 用途:为了便于系统扩展,提供了 JS 脚本的功能,可以通过在系统中执行脚本来获得更复杂的功能. 例如:系统提供了一个接口,这个接口不必非的有实现类,而是可以通过JS来实 ...
- java 执行js脚本_java中调用js脚本
JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...
- mongodb java 执行js脚本_MongoDB编写并执行js脚本
使用mongodb项目时经常需要在数据库中插入假数据,如果每次都手动插入就会很麻烦,所以我们可以选择编写脚本来执行.mongodb是可以直接执行js脚本的,使用方法也比较简单. 编写脚本 以插入数据为 ...
- java 调用js脚本_Java中使用JavaScript脚本的方法步骤
简介 Nashorn Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java的嵌入式JavaScript引 ...
- python执行shell脚本、执行mongodb_mongodb执行js脚本(一)---shell执行
作为一个数据库,MongoDB有一个很大的优势-它使用js管理数据库,所以也能够使用js脚本进行复杂的管理 mongodb 的shell是javascript实现的,如果直接使用js实现相应的功能则显 ...
- 项目中JS脚本的执行方式
在项目中经常会遇到有一些JS脚本,需要我们执行并将结果进行记录或者返回.这里介绍两种在项目中执行JS脚本的方法,分别是基于python和java实现: 1. python执行js脚本 python执行 ...
- android java 调用js,Android中Java和JavaScript交互实例
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...
- android webview js交互 第一节 (java和js交互)
转载请注明出处 挺帅的移动开发专栏 http://blog.csdn.net/wangtingshuai/article/details/8631835 在andro ...
- jsp里面java和js交互_jsp与js交互实例 | 学步园
使用jsp(就是java代码)拼js脚本: lefthead.jsp String basepath = request.getContextPath()+"/"; String ...
最新文章
- 吴 恩 达 教 你 做 机 器 学 习 职 业 规 划
- Mallet机器语言工具包-入门测试
- 高阶奇异值分解(HOSVD)理解
- Xcode 8 GM 编译缺失 /Users/usr/lib/libresolv.9.dylib
- 走向统一的 .NET 旅程
- 数据结构——图的C语言实现
- 三十岁学python_我30岁了,转行学编程可以吗? 排除法告诉你答案
- 对一道if-else相关的程序题的简单分析
- 有道翻译 vs google翻译
- 仿链家地图找房_仿链家地图找房的简单实现
- 假如让你从 0 到 1 实现一个直播弹幕系统
- 2021年安全员-C证(陕西省)考试总结及安全员-C证(陕西省)模拟考试系统
- uniApp APP端调起微信支付失败errCode:-100的踩坑
- PHP反序列化详解(二)——PHP魔术方法与PHP反序列化漏洞
- 视觉slam14讲学习(一)之se3上的定位表示:轨迹显示与轨迹误差
- 攻防世界xctfweb题leaking题解
- 10万弹幕大军带你一起看芒果热播综艺《披荆斩棘的哥哥》
- 什么是核心交换机?如何选择核心交换机?
- Alien Skin Exposure X7离线安装(PS/LR胶片滤镜模拟插件)
- nginx 防止恶意域名解析_nginx防恶意域名解析