欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

jdk1.6中使用Rhino Javascript engine传递值的例子,jdk1.6rhino,Java下面是在jdk6

来源: javaer 分享于  点击 6747 次 点评:232

jdk1.6中使用Rhino Javascript engine传递值的例子,jdk1.6rhino,Java下面是在jdk6


Java

下面是在jdk6中使用Rhino Javascript engine的例子。文档在[http://www.mozilla.org/rhino/ScriptingJava.html][1]

package cn.outofmemory.jsimport java.util.Arrays;import java.util.List;import javax.script.ScriptEngineManager;import javax.script.ScriptEngine;import javax.script.ScriptException;public class Scripting01 {  public static void main(String[] args) {    ScriptEngineManager mgr = new ScriptEngineManager();    // we are using the rhino javascript engine    ScriptEngine engine = mgr.getEngineByName("javascript");    // pass a Java collection to javascript     List <String> list1 = Arrays.asList      ("Homer", "Bart", "Marge", "Maggie", "Lisa");    engine.put("list1", list1);    String jsCode =       "var index; "       + "var values =list1.toArray();"      + "println('*** Java object to Javascript');"      + "for(index in values) {"       + "  println(values[index]);"      + "}";    try {      engine.eval(jsCode);    }    catch (ScriptException se) {      se.printStackTrace();    }    // pass a collection from javascript to java    jsCode =         "importPackage(java.util);"      + "var list2 = Arrays.asList(['Moe', 'Barney', 'Ned']); ";    try {      engine.eval(jsCode);    }    catch (ScriptException se) {      se.printStackTrace();    }    List <String> list2 = (List<String>) engine.get("list2");    System.out.println("*** Javascript object to Java");    for (String val : list2) {      System.out.println(val);    }  }}/* 输出 :    *** Java object to Javascript    Homer    Bart    Marge    Maggie    Lisa    *** Javascript object to Java    Moe    Barney    Ned*/

下面一个例子是将通过classpath加载js文件:

[scripting02.js]

importPackage(java.util);var list1 = Arrays.asList      (['Homer', 'Bart', 'Marge', 'Maggie', 'Lisa']);var listObject = {    list2 : Arrays.asList       (['Moe', 'Barney', 'Ned']),    getList2 : function() {       return listObject.list2;    } };

```{.java}package cn.outofmemory.js

import java.io.InputStreamReader;import java.util.List;

import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;

public class Scripting02 { public static void main(String[] args) throws Exception{ ScriptEngineManager mgr = new ScriptEngineManager(); // we are using the rhino javascript engine ScriptEngine engine = mgr.getEngineByName("javascript");

// the .js is in the classpathengine.eval(new InputStreamReader    (Scripting02.class.getResourceAsStream("scripting02.js")));// retreive a javascript object directlyList <String> list1 = (List <String>)engine.get("list1");if (list1 != null) {  for (String s : (List<String>) list1) {    System.out.println(s);  }}System.out.println("***");// call a javascript function to retrieve an objectif (engine instanceof Invocable){  Invocable engineInv = (Invocable)engine;  Object obj = engine.get("listObject");  Object list2 = engineInv.invokeMethod(obj, "getList2");  if (list2 != null) {    for (String s : (List<String>) list2) {      System.out.println(s);    }  }}

}}

/* output : Homer Bart Marge Maggie Lisa


Moe Barney Ned*/

```

相关栏目:

用户点评