「コア」とは、ロードされるアプリケーションの最初の部分を指します。
URLを場所にバインドするために、GWTはを使用し
PlaceTokenizer<P extends Place>
ます。URLからアプリケーションをロードすると、メソッドを呼び出して、P getPlace(String token)
呼び出す場所の新しいインスタンスを取得します。コード分割の非同期性のため
runAsync
、このメソッドではa内に場所を作成できません。そのため、アプリのすべての場所をコアに配置する必要があります。場所をアクティビティにリンクするために、GWTは
Activity getActivity(Place place)
(fromcom.google.gwt.activity.shared.ActivityMapper
)を呼び出してアクティビティの新しいインスタンスを取得します。繰り返しになりますが、私はすべての活動を中心に据えなければなりません。
これが私が試したいことです:そのカスタムcom.google.gwt.place.shared.Delegate
を書く
- にバインドし
PlaceChangeRequestEvent
ます。requestedPlaceに対応するAppPieceがロードされていない場合は、event.setWarning(NEED_TO_LOAD_MODULE)
- この
confirm(String message)
メソッドでは、メッセージが等しい場合は常にNEED_TO_LOAD_MODULE
falseを返し(ユーザーに迷惑をかけないようにします)、を介してモジュールをロードしますRunAsync
。 - モジュールがロードされたら、
goTo(requestedPlace)
私のアプリケーションの各AppPieceには、一連のアクティビティと対応するビューが含まれています。マッパーはが起動されたときにのみ呼び出されるため、PlaceChangeEvent
を介してアクティビティの新しいインスタンスを生成できますAppPiece.getSomeActivityInstance()
。
これでうまくいくと確信していますが、気になるのは
- requestedPlaceに応じてロードするAppPieceを見つけると、マッパーと非常によく似たコードを記述しなければなりません。
- 対応するAppPiece内に自分の場所を配置したい
- この目的のためにオーバーライド
Delegate
するのは難しいので、より良い解決策を探しています