1

'Calendar'オブジェクトを作成するプロジェクトに既存のJavaScriptがあります。オブジェクトはのメンバーですwindow

プロジェクトにsmartgwtを追加すると、元のCalendarオブジェクトがsmartgwtにパッケージ化されたsmartclientカレンダー(ISC_Calendar)によって上書きされました。

ブラウザベースのJSデバッガーを使用して、smartgwtのすべてのJSオブジェクトがに含まれていることを確認しwindowましたwindow.isc。それらの多くはCalendarのような一般的な名前を持っているので、私は間違いなくそれらすべてをウィンドウレベルで望んでいません。

私の場合の問題のあるファイルは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

smartgwtのCalendarの名前をCalendar2に変更するとします。

まず、smartgwtのソースコードを確認してください。ここを参照してください:http ://code.google.com/p/smartgwt/wiki/BuildingFromSVN

次に、ソースコードで、trunk / main / src / com / smartgwt / client / widgets / calendar/Calendar.javaを開きます。このコードスニペットを見つける:

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

そして、「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");

そして、「Calendar」をCalendar2に置き換えます。

次に、同じファイルで、検索と置換を実行します。に置き換えisc.Calendarますisc.Calendar2。また、ISC_Core.jsで検索と置換を行います。

次に、jarファイルを保存します。カレンダーは機能している必要があり、window.Calendar名前空間は変更されません。

于 2010-07-19T21:45:42.310 に答える
0

設定する必要があります

var isc_useSimpleNames = false;

SmartClientコンポーネントがロードされる前にスクリプトタグで。このようにして、SCはisc。*名前空間にのみクラスを登録します。

于 2011-09-30T12:30:20.663 に答える