1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| public static void main(String[] agrs) throws ScriptException { final ScriptEngine javascriptEngine = new ScriptEngineManager().getEngineByName("javascript"); final Bindings globalBindings = javascriptEngine.getBindings(ScriptContext.GLOBAL_SCOPE); globalBindings.put("a", 5); System.out.println("-------Engine bindings scope--------------"); final Bindings javascriptEngineBindings = javascriptEngine.getBindings(ScriptContext.ENGINE_SCOPE); javascriptEngineBindings.put("x", 20); javascriptEngineBindings.put("y", 20.4); javascriptEngineBindings.put("z", 1); final String[] scriptArray = {"x*y+z", "x*(y+z)", "a+x*(y+z)"}; eval(scriptArray, javascriptEngine);
System.out.println("-------Local bindings scope--------------"); final Bindings localBinding = javascriptEngine.createBindings(); localBinding.put("x", 2); localBinding.put("y", 3); localBinding.put("z", 1); eval(scriptArray, javascriptEngine, localBinding); }
private static void eval(String[] scriptArray, ScriptEngine javascriptEngine) throws ScriptException { Bindings aBindings = javascriptEngine.getBindings(ScriptContext.GLOBAL_SCOPE); for (String key : aBindings.keySet()) { System.out.println("Args (Global bindings scope) > " + key + "=" + aBindings.get(key)); } aBindings = javascriptEngine.getBindings(ScriptContext.ENGINE_SCOPE); for (String key : aBindings.keySet()) { System.out.println("Args (Engine bindings scope) > " + key + "=" + aBindings.get(key)); } for (String script : scriptArray) { System.out.println("script > " + script + " = " + javascriptEngine.eval(script)); } }
private static void eval(String[] scriptArray, ScriptEngine javascriptEngine, Bindings localBinding) throws ScriptException { Bindings aBindings = javascriptEngine.getBindings(ScriptContext.GLOBAL_SCOPE); for (String key : aBindings.keySet()) { System.out.println("Args (Global bindings scope) > " + key + "=" + aBindings.get(key)); } aBindings = javascriptEngine.getBindings(ScriptContext.ENGINE_SCOPE); for (String key : aBindings.keySet()) { System.out.println("Args (Engine bindings scope) > " + key + "=" + aBindings.get(key)); } for (String s : localBinding.keySet()) { System.out.println("Args (Local bindings scope) > " + s + "=" + aBindings.get(s)); } for (String script : scriptArray) { System.out.println("script > " + script + " = " + javascriptEngine.eval(script, localBinding)); } }
|