2013-10-28 3 views
3

С помощью Java Sripting API я могу выполнить JavaScript в Java. Однако, может кто-нибудь объяснить, как захватить возвращаемое значение из JS в Java? В приведенном ниже примере я могу вызвать скрипт2 с помощьюЗахват возвращаемого значения javascript в java

inv.invokeFunction("getValue", "Number", "2); 

Как получить возвращаемое значение из сценария2?

import javax.script.*; 

public class InvokeScriptFunction { 
public static void main(String[] args) throws Exception { 
    ScriptEngineManager manager = new ScriptEngineManager(); 
    ScriptEngine engine = manager.getEngineByName("JavaScript"); 

    // JavaScript code in a String 
    String script1 = "function hello(name) {print ('Hello, ' + name);}"; 
    String script2 = "function getValue(a,b) { if (a==="Number") return 1; 
        else return b;}"; 
    // evaluate script 
    engine.eval(script1); 
    engine.eval(script2); 

    Invocable inv = (Invocable) engine; 

    inv.invokeFunction("hello", "Scripting!!"); //This one works.  
} 
} 
+0

если я пишу выше кода в сервлет то мы можем сказать, что JavaScript работает на ServerSide? –

ответ

1

Вот как вы получите это возвращаемое значение.

String returnValue = (String)inv.invokeFunction("hello", "Scripting!!"); 

То же самое для сценария 2, просто измените вызов соответствующим образом.

Метод invokeFuntion из Invocable возвращает объект. Поэтому перед тем, как использовать его, мы должны ввести его в соответствующий тип.

Reference

+0

Это работает для меня. Спасибо за ссылку. – user2300206

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