2013-10-28 55 views
3

通過使用Java Sripting API,我可以在Java中執行JavaScript。然而,有人可以解釋如何從Java中獲取JS的返回值嗎?在下面的例子中,我可以調用腳本2使用在java中捕獲javascript返回值

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

如何從script2獲取返回值?

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

如果我寫在上面然後servlet代碼我們可以說,JavaScript是在服務器端運行? –

回答

1

這就是你將如何得到該返回值。

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

與腳本2相同,只需相應地更改呼叫。

Invocable的invokeFuntion方法返回一個Object。所以,我們必須在使用它之前將其轉換爲適當的類型。

Reference

+0

它適合我。感謝您的參考。 – user2300206