Вызов функции JavaScript в файле .js из Java - PullRequest
0 голосов
/ 04 марта 2012

Каков наилучший способ вызова функции JavaScript в другом файле .js из файла Java?

Скажем, у меня есть строка типа, похожая на строку в файле Java:

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

Я пытаюсь сделать следующее:

  1. Преобразовать строку Java в массив JavaScript
  2. Передать массив JavaScript в функцию JavaScript в другом файле .js.

Спасибо, Sony

Ответы [ 2 ]

6 голосов
/ 04 марта 2012

Если вы хотите использовать JavaScript в приложении Java, вы можете использовать Rhino .

Если вы хотите вызвать клиентский JavaScript из серверного веб-приложения Java, вы можете использовать1005 * DWR 's Reverse Ajax.

Удачи!

3 голосов
/ 04 марта 2012

Если вы хотите интегрировать 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...