我有一个要求,我必须从 javascript 调用 java GWT 方法,但它不起作用。没有抛出异常,但应用程序挂在某个地方并且代码没有运行。当我不拨打该电话时,该应用程序运行良好。我的 GWT 编译成功。我正在 Firefox 的开发模式下进行测试。
我的代码是这样的 -
class CPClass {
public native void jsCallViewDocument(String objectId)/*-{
$wnd.jsCallViewDocument =
$entry(this.@com.srre.g0a.client.presenter.impl.viewdoc.CPClass::testJS(Ljava/lang/String;)(objectId));
}-*/;
private void testJS(String objectId) {
SC.say("Call successfull" + objectId);
}
private void setDocName(ListGridRecord newRecord, someDTO currDocInfo) {
String anchorTag = "<a href ='#' onclick = \"javascript:jsCallViewDocument('"
+ currDocInfo.getDocName() + "')\">" + currDocInfo.getDocName() + "</a>";
newRecord.setAttribute(Display.GRID_FIELD_DOC_NAME, anchorTag);
}
}
到目前为止,我已经使用 JSNI 进行简单的调用,例如 $wnd.close() 或 $wnd.alert(),所以我可能会遗漏一些东西。我的类(定义了 Native 方法和要调用的方法)是否需要扩展 JavaScriptObject 或者该本地方法是否需要先注册?