0

だから私はGWTアプリを持っていて、外側のボタンからアプリのビューを変更する関数を呼び出そうとしています。通常、これは「this.internalFunction('string')」として呼び出されます。問題は、JSNI が静的メソッドを介して動作するため、問題のオブジェクトが失われることです。解決策: アプリのオブジェクト自体を JSNI 呼び出しに渡し、そこからそのオブジェクトの関数呼び出しを呼び出します。解決策の問題: これは機能しません。:(

クラスは次のようになります。

package blah.package;
public class Foo implements A, B {
    public native void initChangeFunc() /*-{
        $wnd.jsChangeView = $entry(this.@blah.package.Foo::doSomething
            (Lblah.package.Foo;)(this));
            //Pass this to the function call to do calls on app object
    }-*/;
    public void doSomething(Foo obj) {
        //Change view here.
        obj.internalFunction("parameter");
    };
    public void internalFunction(String param) {
        //Do stuff with param.
    }
}

モジュールのロード時に、initChangeFunc() を呼び出し、ページ自体の jsChangeView() にアクセスします。

コンパイル エラーは、コンパイラが blah.package.Foo を見つけられないことを示しています。これは、パラメーターの型シグネチャ (Lblah.package.Foo の部分) が間違っているためです。

[ERROR] Line 64: Expected a valid parameter type signature in JSNI method reference
4

1 に答える 1

0

まず最初に、 を呼び出している行を中断しないようにしFoo::doSomething、それが役立つかどうかを確認します。

于 2012-03-06T19:35:51.683 に答える