我正在尝试使用 GWT 开发 Documentum D2 外部小部件。D2 提供了一个来自 OpenAjaxHub 的内置 JavaScript 的 API 用于通信。
因此,我尝试将此 API 导入公共文件夹中的 GWT 应用程序,并将脚本添加到我的 gwt.xml 中。
所以,做这样简单的事情......
public class WidgetTest implements EntryPoint {
@Override
public void onModuleLoad() {
final RootLayoutPanel rp = RootLayoutPanel.get();
rp.add(new Label("Hello"));
init();
}
private native void init() /*-{
var d2OpenAjaxHub = new D2OpenAjaxHub();
}-*/;
}
我得到错误:
com.google.gwt.core.client.JavaScriptException: (ReferenceError) @com.vilt.widgetTest.client.WidgetTest::init()([]): D2OpenAjaxHub 未定义
gwt.xml...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.6.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.6.0/distro-source/core/src/gwt-module.dtd">
<module rename-to="widgetTest">
<inherits name="com.google.gwt.user.theme.clean.Clean" />
<inherits name="com.google.gwt.user.User" />
<script src="OpenAjaxManagedHub-all.js" />
<script src="D2-OAH.js" />
<source path="client" />
<entry-point class="com.vilt.widgetTest.client.WidgetTest" />
</module>
关于 D2-OAH.js(我只提取了一点):
D2OpenAjaxHub = function() {
this.hubClient = null;
if (typeof(console) == 'undefined')
console = {};
if (typeof(console.log) == 'undefined')
console.log = function(){};
if (typeof(console.debug) == 'undefined')
console.debug = console.log;
if (typeof(console.error) == 'undefined')
console.error = console.log;
// ///////////////////
// CONTEXT / WIDGET INFO
// ///////////////////
this.sContextUid = null;
this.sWidgetType = null;
this.sWidgetId = null;
this.bActive = true;
// ///////////////////
// EVENTS
// ///////////////////
this.registeredChannelIds = new Array();
this.registeredChannels = new Array();
this.sStoredChannel = null;
this.sStoredMessage = null;
this.fStoredCallback = null;
this.bStoredMessageConsumed = false;
}
function D2OpenAjaxHub() {
}
有人知道发生了什么吗?