Calling external javascript function.
Sample Program:
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class SampleJsTest {
public static void main(String[] args) throws NoSuchMethodException, ScriptException, IOException {
//create a script engine manager
ScriptEngineManager manager = new ScriptEngineManager();
//create a JavaScript engine
ScriptEngine engine = manager.getEngineByName("JavaScript");
// read script file
engine.eval(Files.newBufferedReader(Paths.get(System.getProperty("user.dir")+"\\js\\myscripts.js"), StandardCharsets.UTF_8));
Invocable inv = (Invocable) engine;
//call function from script file
double result = (double) inv.invokeFunction("addNumbers", "10","4");
System.out.println(result);
String name = (String) inv.invokeFunction("greeting", "\"Praveen\"");
System.out.println(name);
}
}
Note:
Adds two int's in javasript but returns double.
Reference: http://stackoverflow.com/questions/15528573/rhino-js-scriptengine-from-java-integers-in-doubles-out
Writing javascript in the java code and calling javascript function
Sample Program:
import java.io.IOException;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class SampleJsTest {
public static void main(String[] args) throws NoSuchMethodException, ScriptException, IOException {
//create a script engine manager
ScriptEngineManager manager = new ScriptEngineManager();
//create a JavaScript engine
ScriptEngine engine = manager.getEngineByName("JavaScript");
//Javascript inside java code
//JavaScript code in a String
String script1 = (String) "function add(a,b) {return (parseInt(a)+parseInt(b))}";
engine.eval(script1);
String script2 = (String) "function greeting(name) {return 'Welcome '+name}";
engine.eval(script2);
Invocable inv = (Invocable) engine;
double result = (double) inv.invokeFunction("add", "1","4" );
System.out.println("Add : "+result);
String name = (String) inv.invokeFunction("greeting", "Praveen Kumar");
System.out.println("Name : "+name);
}
}
No comments:
Post a Comment