1

我在创建“日历”对象的项目中有现有的 javascript。该对象是 的成员window

当我将 smartgwt 添加到我的项目时,原来的 Calendar 对象被 smartgwt 中打包的 smartclient 日历 (ISC_Calendar) 覆盖。

使用基于浏览器的 JS 调试器,我发现 smartgwt 中的所有 JS 对象都包含windowwindow.isc. 我绝对不希望它们都在窗口级别,因为它们中的许多都有通用名称,例如日历。

在我的例子中,有问题的文件是 ISC_Calendar.js,它在 gwt 编译后出现在 war/<projectname>/sc/modules 中。它调用以下行:isc.ClassFactory.defineClass("Calendar","Canvas","DataBoundComponent");

GWT 编译位置:war/projectname/sc/modules/ISC_Calendar.js
Jar 位置:com.smartclient public/sc/modules/ISC_Calendar.js
Src 位置:找不到

我想我可以只更改我正在使用的 jar 中的 javascript 文件,但这并不能真正解决更大的问题。我不想担心以后会遇到命名空间问题

4

2 回答 2

0

你必须设置

var isc_useSimpleNames = false;

在加载任何 SmartClient 组件之前的脚本标记中。这样 SC 将只在 isc.* 命名空间中注册类。

于 2011-09-30T12:30:20.663 回答
0

假设您要将 smartgwt 的日历重命名为 Calendar2。

首先,查看 smartgwt 的源代码。见这里:http ://code.google.com/p/smartgwt/wiki/BuildingFromSVN

然后,在源代码中,打开trunk/main/src/com/smartgwt/client/widgets/calendar/Calendar.java。找到这个代码片段:

public Calendar(){
    scClassName = "Calendar";
}

并将“日历”替换为 Calendar2。

现在编译源代码。再次查阅此链接以帮助您编译:http ://code.google.com/p/smartgwt/wiki/BuildingFromSVN 。

获取生成的 smartgwt.jar 并在 jar 编辑器中打开它。导航到com.smartclient public/sc/modules/ISC_Calendar.js并打开它。找到这个代码片段:

isc.ClassFactory.defineClass("Calendar","Canvas","DataBoundComponent");

并将“日历”替换为 Calendar2。

接下来,在同一个文件中,进行查找和替换。替换isc.Calendarisc.Calendar2。还要在 ISC_Core.js 中进行查找和替换。

现在保存罐子。日历应该可以正常工作,并且 window.Calendar 命名空间将保持不变。

于 2010-07-19T21:45:42.310 回答