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

首先,尽量不要断线 call Foo::doSomething,并检查它是否有帮助。

于 2012-03-06T19:35:51.683 回答