0

在与 Java 文件不同的 .js 文件中调用 JavaScript 函数的最佳方法是什么?

说,我在 Java 文件中有一个这样的字符串:

String test = "[name1, name2, name2]";

我想做的是以下几点:

  1. 将 Java 字符串转换为 JavaScript 数组
  2. 将 JavaScript 数组传递给不同 .js 文件中的 JavaScript 函数。

谢谢,索尼

4

2 回答 2

6

如果你想在 Java 应用程序中使用 JavaScript,你可以使用Rhino

如果要从服务器端 Java Web 应用程序调用客户端 JavaScript,可以使用DWR的 Reverse Ajax。

祝你好运!

于 2012-03-04T00:22:35.067 回答
3

如果你想集成 Javascript 和 Java,那么你可以使用 Rhino。请参阅下面的示例以获得更好的理解:

测试.js

function test(array){
    for(var i in array){
        out.println(array[i]);
    }
}

RhinoTest.java

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;

public class RhinoTest {

    public static void main(String[] args) {

        Context ctx = new ContextFactory().enterContext();

        Scriptable scope = ctx.initStandardObjects();

        try {
            Object out = Context.javaToJS(System.out, scope);
            scope.put("out", scope, out);

            FileReader fr = new FileReader("test.js");
            ctx.evaluateReader(scope, fr, "<cmd>", 1, null);
            fr.close();

            String[] strArray = {"name1","name2","name3"};
            Object jsArray = Context.javaToJS(strArray, scope);
            scope.put("jsArray", scope, jsArray);

            ctx.evaluateString(scope, "test(jsArray)", "<cmd>", 1, null);

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Context.exit();
    }
}
于 2012-03-04T02:17:47.007 回答