Javaファイルとは異なる.jsファイルでJavaScript関数を呼び出す最良の方法は何ですか?
たとえば、Java ファイルに次のような文字列があります。
String test = "[name1, name2, name2]";
私がやろうとしていることは次のとおりです。
- Java 文字列を JavaScript 配列に変換する
- 別の .js ファイルで JavaScript 配列を JavaScript 関数に渡します。
ありがとう、ソニー
Javaファイルとは異なる.jsファイルでJavaScript関数を呼び出す最良の方法は何ですか?
たとえば、Java ファイルに次のような文字列があります。
String test = "[name1, name2, name2]";
私がやろうとしていることは次のとおりです。
ありがとう、ソニー
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();
}
}