我们可以在 GWT 中使用这个 $entry 方法来允许外部 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");
}
我觉得很有趣的是调用了警报,我在浏览器中看到了结果,但是没有执行之前的调用。
你知道是否真的可以做这样的事情吗?