2012-01-11 8 views
0

gwtアプリケーションがhtmlにマップされるEntryPointを複数持つことができるように、GWTを使ってマルチページを達成する方法。ようにedit.htmlとにマッピングhome.htmlEditEntryPointにマッピングHomeEntryPoint同様GWTマルチページを実現する方法

。私はそのもう維持されていないと思いますがhttp://localhost:8080/home.htmlまたはhttp://localhost:8080/edit.html

は今、私はGWT Multipageを使用しています:エントリーポイントをロードするというようなことは、このようにURLを通じたアクセスです。そして、私は今修正することができないいくつかの問題があります。あなたは、これで大丈夫です場合...

は数あります -

問題this.

答えて

1

は、次のページがロードされるとき、あなたのアプリが再び起動する必要がありますことを意味しますこれを行うようにこのようなことをする方法。最も速く/最も簡単なのは、モジュールファイル内のすべてのエントリーポイントをリストすることです。それぞれの先頭にあるonModuleLoadは、正しいページにあるかどうかをチェックします。 (当然の各ページ/エントリポイント用にカスタマイズされた)のようなもの:

if (!Window.Location.getPath().toLowerCase().endsWith("myhtmlpage.html") { 
    return; 
} 

GWTは1つのJSに(ちょうどファイルの一組、一度だけダウンロードされた各クラスを作るために、すべての依存クラス)すべてのエントリポイントをコンパイルします。ファイルであり、すべてのエントリーポイントが実行されますが、その時点で実行されるべきでない場合は、それらは停止します。

さらに、これを変更して各エントリポイントの注釈を使用し、すべてのエントリポイントのジェネレータを使用します(エントリポイントインスタンスがGWT.createで作成されていることを知っていますか?それは本当です)。onModuleLoadこのロジックを自動的に追加します。

はgetHref()の代わりにある、getPath()を使用して編集、およびtoLowerCaseメソッドに()その文字列にはケースの問題は

+0

getHref()を使用した賢明なソリューションです。そのため、module.gwt.xmlファイルのentrypointクラスエントリをコードに挿入します。 – xybrek

+0

wait、btw、チェックがendsWith( "something.html")であるため、これはフラグメント識別子とURLパラメータに問題がありますが、正しいですか? – xybrek

+0

素晴らしい点、申し訳ありませんが、私はそれを逃した...今すぐ修正するwindow.location.pathname(Location.getPath()gwt) –

0

をトリミングしないことを保証するために、どのように単純に別々にコンパイル、それらを別々のアプリケーションを作るでしょうか?

+0

はい、それは間違いなく最終的な解決策ですが、今は私のプロトタイプのために、すべてを1か所で作成するだけです。 – xybrek

+0

「一箇所にすべて」を持つことと互換性のない別個のモジュールをどのように使用していますか?単にDevModeまたはCompilerに複数のモジュール名を渡すだけです。 Eclipse用Google Pluginでは、これが本当に簡単になります。 –

+0

1つのモジュールの利点の1つは、ユーザーが1つの大きなダウンロードを待つだけであることです。特に、アプリケーションのさまざまな部分に重複がある場合は、Widgetクラスとその依存関係を使用すると約45k、もちろんクラスが大きくなると、より多くのjsがプルダウンするようになります。 –

関連する問題