2012-08-07 79 views
0

我試圖通過JSNI從GWT返回值到JavaScript的JSNI

static public int call() { return 20; } 

    public static native int jstest() /*-{ 
     try{ 
      [email protected]::call()(); 
      window.alert("Val:"+val); 
      return $wnd.val; 
     } catch(e) { 
      console.error(e.message); 
     } 
    }-*/; 

,並在javascript alert(document.val);在GWT返回從Java函數值的JavaScript,我結束了異常比int其他東西從JSNI方法返回。我想我搞砸了返回值的JavaScript。請讓我知道我出錯的地方!

+1

是否有一個具體的原因是什麼? – 2012-08-07 09:08:51

回答

4

通過將val聲明爲全局的,它在窗口對象上註釋(注意:不是$ wnd對象)。有時使用GWT這兩個是相同的,有時它們不是(這取決於您使用的鏈接器)。

這就是爲什麼你需要改變你的代碼讀取

$wnd.val = @com.xxxx.package::call()(); 

或刪除全局變量:爲什麼你聲明`val`全球

var val = @com.xxxx.package::call()(); 
return val; 
+0

和在純javascript,我調用alert(document.val); ,但它沒有返回值?,猜測我所做的調用沒有被正確調用! – Rangesh 2012-08-08 08:00:21