Stack Overflow is a community of 4.7 million programmers, just like you, helping each other.

Join them; it only takes a minute:

Sign up
Join the Stack Overflow community to:
  1. Ask programming questions
  2. Answer and help your peers
  3. Get recognized for your expertise

What is the best way to call a JavaScript function in a different .js file from a Java file?

Say, I have a String like so in a Java file:

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

What I am trying to do is the following:

  1. Convert the Java String into a JavaScript array
  2. Pass the JavaScript array to a JavaScript function in a different .js file.

Thanks, Sony

share|improve this question
1  
JS runs on the client side, Java runs on the server's side. The server-side does not "pass" parameters to the client-side, the server-side generates the client-side. So I don't understand the issue. Can you tell us more about what you're trying to do ? – alfasin Mar 4 '12 at 0:17
    
@alfasin Java runs on the server's side Java also could be a java applet java.sun.com/products/plugin/1.3/docs/jsobject.html – Cheery Mar 4 '12 at 2:42
1  
@Cheery you're right. But I have a feeling that Sony didn't refer to applets. – alfasin Mar 4 '12 at 4:25
up vote 5 down vote accepted

If you want to use JavaScript in a Java application, you can use Rhino.

If you want to call client side JavaScript form a serverside Java web application, you can use DWR's Reverse Ajax.

Good luck!

share|improve this answer

If you want to integrate Javascript and Java, then you can use Rhino. See the example below for a better comprehension:

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();
    }
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.