从gwt返回值到javascript-jsni

时间:2012-08-07 08:44:36

标签: java gwt jsni

我试图通过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的价值。请告诉我哪里出错!

1 个答案:

答案 0 :(得分:4)

通过将val声明为全局,它会在窗口对象上分配(注意:不是$ wnd对象)。有时使用GWT这两个是相同的,有时它们不是(它取决于您使用的链接器)。

这就是您需要将代码更改为

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

或删除全局变量:

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