Итак, у меня есть приложение 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