1

GWT アプリで JSNI 呼び出しからネイティブ Java 関数を実行しようとしています。次のようになります。

パッケージ foo.client;

public class AAA は、EntryPoint、UIupdate を実装します {

public native void initChangeFunc() /*-{
    $wnd.jsChangeView = function () {

        this.@foo.client.AAA::changeToHistory();
        alert("got here");
    };
}-*/;
public void changeToHistory() {
    Window.alert("Hello World");
    //Change view here.
    this.changeView("history");
    this.changeHistoryView("bydate");
};

...

public void onModuleLoad() {

...

    this.initChangeFunc();
}

}

フロントエンドで jsChangeView() 関数呼び出しをリンク onclick() にアタッチしてクリックすると、「ここに来ました」アラートが発生しますが、「Hello World」アラートは発生せず、他の 2 つの関数も実行されません。GWT は私の専門分野ではありませんし、これは私のアプリでもありません。そのため、ここで何か基本的なことが欠けていることはわかっています。テイカーはいますか?

4

1 に答える 1

3

this.@foo.client.AAA::changeToHistory()メソッド(必要に応じて「関数ポインタ」、またはJavaScriptでは「関数」)のみを参照している場合は、メソッドを呼び出しません。this.@foo.client.AAA::changeToHistory()()あなたは実際に電話をかけるために書く必要があります。

メソッドに引数がある場合は、より明白になります。例: this.@foo.client.AAA::changeToHistory(Ljava/lang/String;I)vs.。this.@foo.client.AAA::changeToHistory(Ljava/lang/String;I)("foo", 3)

于 2011-06-20T21:55:09.437 に答える