GWT-вызов метода экземпляра из внешнего javascript

существует этот метод $entry, который мы можем использовать в GWT, чтобы позволить внешнему javascript выполнять методы java. Вы можете увидеть пояснения в их документации https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI?hl=fr#calling

однако пример существует только со статическими методами. Я пытаюсь написать его для нестатического метода, и когда я пытаюсь его вызвать, я получаю исключение :

java.lang.ClassCastException: Cannot cast com.google.gwt.core.client.JavaScriptObject$ to mypackage.MyModule

вот мой код :

public native void setRefreshModuleCallback() /*-{
    $wnd.refreshModule = $entry(function() {
        this.@mypackage.MyModule::refreshModuleJava();
        alert('test');
    });
}-*/;

public void refreshModuleJava() {
    logger.log(Level.WARNING, "REFRESH");
}

что я нахожу очень забавным, так это то, что вызывается предупреждение, я вижу результат в браузере, но вызов непосредственно перед этим не выполняется.

знаете ли вы, действительно ли это возможно сделать ?

1 ответов


$entry не о вызов java, речь идет об обеспечении нескольких вещей в GWT: исключения направляются в GWT.UncaughtExceptionHandler, и команды запланировано via Scheduler#scheduleEntry и Scheduler#scheduleFinally правильно называется.

ваша проблема-это this. Когда функция вызывается, this - это не твоя MyModule класс (это, скорее всего,