1

私の GWT 2.5 アプリケーションでは、2 つのエントリ ポイントを取得しました。EntryPoint A はメイン アプリケーションで、EntryPoint B は私のアプリケーションのウィジェット バージョンを提供します。

コンテナーに提供する起動パラメーターに応じて、EntryPoint B を有効/無効にしたいのですが、どうすればそれを達成できますか? *.gwt.xml ファイルから対応する宣言を削除することにより、コンパイル時に EntryPoint を完全に無効にする方法を知っています。

4

4 に答える 4

2

GWT アプリケーションは、エントリポイントを 1 つだけ持つことができます。したがって、2 つのアプリケーションの代わりに、ContainerA と ContainerB という 2 つのコンテナを作成できます。Entrypoint の onModuleLoad メソッドで、RPC 呼び出しを実行して Container 決定パラメータを取得します。そして、あなたが行うパラメータに基づいて

public void onModuleLoad()
{ 
      getRPCService.getStartUpParameter( AsyncCallBack<Parameter>
      { 
             public void onFailure()
             {
             }

             public void onSuccess(Parameter parameter)
             {
                   if( ContainerARequired( parameter ) )
                   {
                          RoolLayoutPanel.get().add( ContanerA )
                   }
                   else
                   {
                          RoolLayoutPanel.get().add( ContanerB )
                   }
             }
      });
}

この方法を使用すると、js サイズが大きくなります。そのため、コード分割と非同期実行の概念を使用して、大きな js ファイルを小さなファイルに分割します。これで、必要な js だけをブラウザに読み込むことができます。

于 2013-02-26T14:08:44.727 に答える
2

それぞれが異なるエントリ ポイントを提供する 2 つのモジュールを作成できるようです。どちらも共通のロジック モジュールから継承されます。次に、それぞれに異なるブーストラップ JavaScript URL (.nocache.js) があります。短所は、それらがブラウザーに対して完全に異なるスクリプトになることです。そのため、ウィジェットとフル バージョンを切り替えても、キャッシュのメリットはありません。

エントリ ポイントを実行する必要があるかどうかをエントリ ポイント メソッド内で簡単にテストすることもできます。そうでない場合は単に戻ります。たとえば、予期されるコンテナー要素が DOM や URL などに存在するかどうかを確認できます。1 つのモジュールで 2 つのエントリ ポイントが実行されても、大きな問題はありません。

于 2013-02-26T14:09:30.887 に答える
0

あなたのgwt.xml

<define-property name="disableEntryPoint" values="true,false" />

<!-- Provide a default -->
<set-property name="alternateFeatures" value="false" />


<replace-with class="com.example.EntryPoint1">
  <when-type-is class="com.example.EntryPoint2" />
  <when-property-is name="disableEntryPoint" value="false" />
</replace-with>

これを参照してください: http://code.google.com/p/google-web-toolkit/wiki/ConditionalProperties

于 2013-02-26T13:53:33.663 に答える
0

たぶん、1 つのエントリ ポイントごとに 1 つのアプリケーションを持つ方がよいでしょう。その結果、独自のコンテキストとアクセス パスを持つ 2 つのモジュールが作成されます。

  • /entryA
  • /entryB

また、2 つのファイル:

  • EntryA.gwt.xml
  • EntryB.gwt.xml

それらには、 Application.gwt.xmlからの一般的なものが含まれます

于 2013-02-28T08:54:37.807 に答える