ScriptEngine + Wie Parameter übergeben bei Fukntion?

wdmprojekt

Mitglied
Hi,

ich versuche mich gerade an einer einfachen Methode um die
JavaScript ScriptEngine zu testen. Ziel ist die Ausgabe eines übergebenen Namens.

Dies Ausgabe ist leer. Warum?

Java:
ScriptEngineManager manager = new ScriptEngineManager();
		ScriptEngine jsEngine = manager.getEngineByName("js");

		try {
			// Make js functions invocable by Java
			Invocable invocableEngine = (Invocable) jsEngine;
			
			// Hello World for testing purposes
			jsEngine.eval("function sayHello(name) {"
					+ "  println('Hello, '+ name +'!');" + "}");
			
			// handle sayHello()
			invocableEngine.invokeFunction("sayHello");
 
Weil du kein Parameter übergibst.

Aus der API: invokeFunction(String name, Object... args)

Sprich du kannst in den Aufruf beliebig viele Parameter mit angeben, also z.B.

Java:
invocableEngine.invokeFunction("sayHello", "Max Mustermann");

Sollte zumindest so funktionieren. Ich kenn die API selbst nicht wirklich 🙂
 
Lösung:

Java:
// Hello World for testing purposes
jsEngine.eval("function sayHello(name1, name2, name3) {"
    + "  println('Hello, '+ name1 + ' ' + name2 + ' ' + name3 +'!');"
+ "}");

invocableEngine.invokeFunction("sayHello", "world1", "world2", "world3");
 

Zurück
Oben