我试图通过JSNI将来自GWT中的java函数的值返回到javascript
static public int call() { return 20; }
public static native int jstest() /*-{
try{
val=@com.xxxx.package::call()();
window.alert("Val:"+val);
return $wnd.val;
} catch(e) {
console.error(e.message);
}
}-*/;
在javascript alert(document.val);
中,我最终得到了Exception 从JSNI方法返回的除了int以外的东西。我想我正在搞砸javascript的价值。请告诉我哪里出错!
答案 0 :(得分:4)
通过将val声明为全局,它会在窗口对象上分配(注意:不是$ wnd对象)。有时使用GWT这两个是相同的,有时它们不是(它取决于您使用的链接器)。
这就是您需要将代码更改为
的原因$wnd.val = @com.xxxx.package::call()();
或删除全局变量:
var val = @com.xxxx.package::call()();
return val;