所以我有一个 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