簡體   English   中英

從Java調用.js文件中的JavaScript函數

[英]Calling JavaScript function in a .js file from Java

在不同於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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM