generate sample codeを使わずGWTプロジェクトを組み立ててみる

GAEもOFFにして、最小構成から手順を確認します。

Moduleの作成

New > Moduleで、GWT Moduleを作成します。
パッケージはプロジェクト作成時に作ったパッケージにします。
下記のxmlが*.gwt.xmlで作成されます。
ついでにclientというサブパッケージが追加されます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.2.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.2.0/distro-source/core/src/gwt-module.dtd">
<module>
	<inherits name="com.google.gwt.user.User" />
	<source path="client"/>
</module>

EntryPointの作成

New > EntryPointとすると、勝手にclientの下に作成してくれます。動作確認のために、alertを仕込んでおきます。

public class MyEntryPoint implements EntryPoint {

	@Override
	public void onModuleLoad() {
		Window.alert("onModuleLoad");
	}

}

EntryPointクラスを作成すると、プラグインが自動的にModuleファイルにもEntryPointの情報を追加してくれます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.2.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.2.0/distro-source/core/src/gwt-module.dtd">
<module>
	<inherits name="com.google.gwt.user.User" />
	<source path="client" />
	<entry-point class="com.naokichick.samplegwt.client.MyEntryPoint" />
</module>

HTMLの作成

New > HTMLでhtmlを作成します。
scriptのsrcに、モジュールのパスが設定されます。

<!doctype html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>mypage</title>
    <script type="text/javascript" language="javascript" src="com.naokichick.samplegwt.MyModule/com.naokichick.samplegwt.MyModule.nocache.js"></script>
  </head>

  <body>

  </body>
</html>

実行する

Run As でホストモードで実行すると、alertが表示されます。また、warフォルダ内にモジュールのパスに対応したフォルダが作成されます。

GWT.getModuleName()はscriptのsrc属性で決定される

scriptのsrc属性は作成したときのmoduleの情報で書き込まれます。なので、後からmoduleのrename-toを書き換えたときは、ここも書き換えないと正しく動作しませんでした。moduleをrename-to="mymodule"としてから、htmlを作成しなおすと、今度は下記のようになりました。

<!doctype html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>mypage</title>
    <script type="text/javascript" language="javascript" src="mymodule/mymodule.nocache.js"></script>
  </head>

  <body>

  </body>
</html>

この書き換えの後は、サーバを再起動する必要があるみたいです。