この$entryメソッドは、外部javascriptがjavaメソッドを実行できるようにするためにGWTで使用できます。説明は、ドキュメント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");
}
私が非常に面白いと思うのは、アラートが呼び出され、ブラウザに結果が表示されますが、直前の呼び出しは実行されないということです。
そのようなことが実際に可能かどうか知っていますか?