|
@@ -0,0 +1,77 @@
|
|
|
+package com.persagy.labsl.controller
|
|
|
+
|
|
|
+import javax.script.Invocable
|
|
|
+import javax.script.ScriptEngineManager
|
|
|
+
|
|
|
+/**
|
|
|
+ * java调用js代码工具类
|
|
|
+ *
|
|
|
+ * @author 张维新
|
|
|
+ */
|
|
|
+object JavaJsUtil {
|
|
|
+ /**
|
|
|
+ * java 调用js 函数脚本方法
|
|
|
+ * @param function
|
|
|
+ * @param variable
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ fun javaJs(function: String?, variable: String?): Boolean {
|
|
|
+ return try {
|
|
|
+ val manager = ScriptEngineManager()
|
|
|
+ val engine = manager.getEngineByName("javascript")
|
|
|
+ engine.eval(function)
|
|
|
+ if (engine is Invocable) {
|
|
|
+ val `in` = engine as Invocable
|
|
|
+ // System.out.println(in.invokeFunction("transform",variable));
|
|
|
+ return if (`in`.invokeFunction("transform", variable) as Boolean) {
|
|
|
+ true
|
|
|
+ } else {
|
|
|
+ false
|
|
|
+ }
|
|
|
+ }
|
|
|
+ false
|
|
|
+ } catch (e: Exception) {
|
|
|
+ e.printStackTrace()
|
|
|
+ false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * java 调用js 函数脚本方法
|
|
|
+ * @param function 函数
|
|
|
+ * @param variable 对象json
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ fun javaJsFun(function: String?, variable: String?): Boolean {
|
|
|
+ return try {
|
|
|
+ val manager = ScriptEngineManager()
|
|
|
+ val engine = manager.getEngineByName("javascript")
|
|
|
+ engine.eval(function)
|
|
|
+ if (engine is Invocable) {
|
|
|
+ val `in` = engine as Invocable
|
|
|
+ // System.out.println(in.invokeFunction("transform",variable));
|
|
|
+ return `in`.invokeFunction("transform", variable) as Boolean
|
|
|
+ }
|
|
|
+ false
|
|
|
+ } catch (e: Exception) {
|
|
|
+ e.printStackTrace()
|
|
|
+ false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 调用js函数
|
|
|
+ *
|
|
|
+ * ScriptEngineManager 支持的脚本 Javascript、Groovy、Ruby、Scheme、Haskell
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @Throws(Exception::class)
|
|
|
+ fun callJsFunction() {
|
|
|
+ val manager = ScriptEngineManager()
|
|
|
+ val engine = manager.getEngineByName("javascript")
|
|
|
+ engine.eval("function add (a, b) {return a+b; }")
|
|
|
+ val jsInvoke = engine as Invocable
|
|
|
+ val res = jsInvoke.invokeFunction("add", *arrayOf<Any>(10, 5))
|
|
|
+ println(res)
|
|
|
+ }
|
|
|
+} // Class JavaJsUtil
|