此示例演示如何从脚本访问Java对象。我们通过调用ScriptEngine的put(String key, Object value)方法将Java对象放入脚本引擎中。以后我们的脚本可以读取或访问此值。例如,我们传递一个字符串数组和一个日期对象供脚本显示。
package org.nhooo.example.script; import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; import javax.script.ScriptException; import java.util.Date; public class AccessJavaObjectFromScript { public static void main(String[] args) { // 创建五种颜色的数组 String[] colors = {"White", "Black", "Red", "Green", "Blue"}; Date now = new Date(); // 下面是我们的脚本,用于读取以下内容的Java数组的值: // 包含颜色字符串。 String script = "var index; " + "var colors = colorArray; " + " " + "for (index in colors) { " + " println(colors[index]); " + "}" + "println('----------'); " + "println('Today is ' + date); "; // 获取一个ScriptEngine实例。 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("js"); // 使用colorArray键将颜色数组放入引擎中。 // 将数组设置为引擎后,我们的脚本将是 // 能够读取它。 engine.put("colorArray", colors); engine.put("date", now); try { engine.eval(script); } catch (ScriptException e) { e.printStackTrace(); } } }
我们的代码将打印如下:
White Black Red Green Blue ---------- Today is Fri Dec 21 23:03:39 WITA 2018