これを実現するための簡単な (トリッキーな) 方法があります。
メインクラスをあなたのエントリーポイントにします。
<module rename-to='gwt'>
<inherits name='com.google.gwt.user.User'/>
<entry-point class='com.example.client.Main'/>
<source path='client'/>
<source path='shared'/>
</module>;<br/>
ディスパッチャのように機能する Main.java を作成します。
package com.example.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
public class Main implements EntryPoint {
public void onModuleLoad() {
String url = Window.Location.getHref();
if ( url.indexOf("?install")>-1 ) {
Install install = Install.getInstance();
RootPanel.get().add(install);
else if ( url.indexOf("?admin")>-1 ) {
Admin admin = Admin.getInstance();
RootPanel.get().add(admin);
} else {
Application app = Application.getInstance();
RootPanel.get().add(app);
}
}
}
現在、アプリケーション、管理者、およびインストールのさまざまなクラスが、個別のユニットのように機能します。
たとえば、簡単なインストールを次に示します。
package comexample.client;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
public class Install extends FlowPanel {
/** Singleton stuff - to access Main from all subclasses! */
private static Install singelton;
public static Install getInstance() {
if (singelton == null) {singelton = new Install();}
return singelton;
}
/** Constructor - called by Main.onModuleLoad() */
private Install() {
this.add(new HTML("<h1>Do whatever You have to do!</h1>"));
}
}
シングルトンのもの (getInstance) は必要ありませんが、大規模なアプリケーションでは非常に便利です。
/war-directory に install および admin という名前のディレクトリを作成し、そのほとんどに次のような HTML ページを作成します。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; URL=/index.html?install">
</head>
<body></body>
</html>
したがって、ユーザーがブラウザをhttp://www.example.com/installに誘導すると、ユーザーはhttp://www.example.com/index?installにリダイレクトされ、index.html は Main.java にバインドされ、ディスパッチされます。リクエストとロードInstall.java