从Java调用.js文件中的JavaScript函数

Calling JavaScript function in a .js file from Java

本文关键字:JavaScript 函数 文件 Java 调用 js      更新时间:2023-09-26

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

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

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

我想做的是:

  1. 将Java字符串转换为JavaScript数组
  2. 将JavaScript数组传递给另一个.js文件中的JavaScript函数

谢谢,索尼

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

如果您想从服务器端Java web应用程序调用客户端JavaScript,可以使用DWR的反向Ajax。

祝你好运!

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

test.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();
    }
}