0

GWT の Java 関数から JSNI 経由で 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では、 JSNIメソッドからint以外のalert(document.val);例外が返されました。私はjavascriptに値を返すのを台無しにしていると思います。どこが間違っているのか教えてください!

4

1 に答える 1

4

val をグローバルとして宣言すると、ウィンドウ オブジェクトに割り当てられます (注: $wnd オブジェクトではありません)。GWT では、これら 2 つが同じ場合もあれば、そうでない場合もあります (使用しているリンカーによって異なります)。

これが、読み取るようにコードを変更する必要がある理由です

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

または、グローバル変数を次のように削除します。

var val = @com.xxxx.package::call()();
return val;
于 2012-08-07T09:35:06.620 に答える