我們可以在GWT中使用$ entry方法來允許外部javascript執行java方法。 您可以在其文檔中看到解釋https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI?hl=fr#callingGWT - 從外部調用實例方法javascript
但是,該示例僅適用於靜態方法。我試圖寫一個非靜態方法,當我嘗試調用它,我得到一個異常:
java.lang.ClassCastException: Cannot cast com.google.gwt.core.client.JavaScriptObject$ to mypackage.MyModule
這裏是我的代碼:
public native void setRefreshModuleCallback() /*-{
$wnd.refreshModule = $entry(function() {
[email protected]::refreshModuleJava();
alert('test');
});
}-*/;
public void refreshModuleJava() {
logger.log(Level.WARNING, "REFRESH");
}
我覺得很搞笑警報是否被調用,我在瀏覽器中看到結果,但之前的調用未執行。
你知道是否真的有可能做這樣的事情嗎?
請注意,我看了這篇文章,並沒有幫助(或者我錯過了一些東西)http://stackoverflow.com/questions/9676960/issue-with-calling-instance-method-from-handwritten- javascript – 2013-03-07 15:30:07