2011年2月1日火曜日

[GWT]GWTの起動プロセスを理解し、複数のGWTモジュールを設定する

(話がちょっとNetbeans寄りの話になりますが、、、)
GWTのアプリケーションを作成した場合、1つのEntryPointクラスを起点にして、クライアント側で動的にWidgetの描画を変えていくことで、擬似的にページ遷移を実現していきます。システムの画面パターンが複雑になってくると、生成されるJavaScriptも肥大化するでしょうし、気持ち的に分けたくなります。解決策として、プロジェクト内で複数のGWTモジュールを配置すればよいわけですが、NetbeansでGWTモジュールを新規作成した場合、xmlファイルしか作成されません。GWTの起動プロセスを理解しておかないと、「なんだこれは?」、、、という事になりますので、GWTの起動プロセスを理解し、各種設定を記述していく必要があります。以下、その順にそって説明していきます。

1.HTMLページ
まず、最初に参照されるのはHTMLページです。このページではmetaタグでGWTの設定ファイルについての名前を書いています。下記の例では、org.ochilabパッケージ内にあるapp.gwt.xmlファイルを見に行くことになります。scriptタグでは最終的に参照されるJavaScriptファイルなどの名前を書きます。下記の例では、web直下のorg.ochilab.appディレクトリにorg.ochilab.apps.nocache.jsファイルを参照しますという意味になります。
<meta>name='gwt:module' content='org.ochilab.apps=org.ochilab.apps'</meta>
 

2.GWT設定ファイル
ここでは、起点となるentry-pointクラスの情報を記述します。以下の例では、org.ochilab.clientパッケージのappsEntryPointクラスであると設定しています。
<entry-point class="org.ochilab.client.appsEntryPoint">
</entry-point>

3.entry-pointクラス
これはもうわかっていると思いますが、EntryPointインタフェースを継承したクラスであればOKです。



以上でめでたし解決、、、、というところですが、1点穴があります。このままプロジェクトを構築してもJavaScriptファイルが生成されません。つまり、最初にHTMLページで指定したJavaScriptが生成されないのです。この点については、Netbeansにおいては、
  • nbprojectフォルダにあるgwt.propertiesの gwt.module項目に追記
が必要です。具体的には下記のようになります。

gwt.module=org.ochilab.main org.ochilab.apps
この例は、元々あったorg.ochilab.mainというGWTモジュールに新たにorg.ochilab.appsモジュールを追記しています。つまり、1つのプロジェクトで複数のGWTモジュールを扱いたい場合は、ここの項目にそのモジュール名を列挙していけば良いということです。その際、各モジュールの名前はスペースで区切ることになります。


0 件のコメント:

コメントを投稿