2012-03-04 2 views
0

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

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

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

То, что я пытаюсь сделать, это следующее:

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

Спасибо, Sony

+1

JS работает на стороне клиента, Java бежит на стороне сервера. Серверная сторона не передает параметры на стороне клиента, серверная сторона создает клиентскую сторону. Поэтому я не понимаю эту проблему. Можете ли вы рассказать нам больше о том, что вы пытаетесь сделать? – alfasin

+0

@alfasin 'Java работает на стороне сервера' Java также может быть java-апплетом http://java.sun.com/products/plugin/1.3/docs/jsobject.html – Cheery

+1

@ Вы сами правы. Но у меня такое ощущение, что Sony не ссылалась на апплеты. – alfasin

ответ

6

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

Если вы хотите вызывать JavaScript на стороне клиента, создайте веб-приложение на базе сервера Java, вы можете использовать обратный Ajax DWR.

Удачи вам!

3

Если вы хотите интегрировать 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(); 
    } 
} 
+0

спасибо за обмен –

Смежные вопросы