2013-03-19 131 views
0

我一直試圖通過JSNI將值傳遞給Javascript方法,但它始終失敗。通過JSNI將GWT值傳遞給Javascript

是這種方法有效:

public static native JavaScriptObject getProductById(long pid) /*-{ 
    var productId = pid; 
    var product = $wnd.products({id:productId}).first();  
    return product; 
}-*/; 

我可以說的是,JS的方法是正確的,因爲如果我把一個恆定值代替productId,我得到正確的輸出。

我錯過了什麼?

+0

此外,我必須將參數從'長'更改爲'長' – xybrek 2013-03-19 08:05:37

回答

4

JSNI不允許使用long作爲輸入變量,請參閱說明here

你可以嘗試使用double(或者甚至是int)來代替,但是要確保你的Javascript代碼支持它。

public static native JavaScriptObject getProductById(double pid) /*-{ 
    var productId = pid; 
    var product = $wnd.products({id:productId}).first();  
    return product; 
}-*/; 
0

如果使用gwtquery,你將有很好的實用方法,以避免應對JSNI大部分瑣碎的事情就像調用一個js函數,或用於建築或閱讀JS性能。

import static com.google.gwt.query.client.GQuery.*; 
... 

Properties prd = JsUtils.runJavascriptFunction(window, "products", $$("id: 12345")); 
Properties ret = JsUtils.runJavascriptFunction(prd, "first"); 

System.out.println(ret.toJsonString());