1

http://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.htmlで説明されているように、GWTのアクティビティと場所を使用していますが、すべて正常に機能しています。

History.back()私がやりたいのは、特定のページから、履歴状態を失いたくないので、使用せずに前のページに移動することです。(ユーザーがアクションを実行するページがあります。成功した場合は前のページに戻って履歴状態を保持しますが、キャンセルした場合History.back()は状態を失いたいので使用します)。

これを行うために私が考えることができる唯一の方法は、場所/履歴の変更イベントをリッスンし、以前の場所を利用できるようにして、電話をかけることができる独自の場所/履歴追跡コードを作成することです。placeController.goto(...)

これを行う簡単な方法はありますか?私は何かが足りないのですか?

4

2 に答える 2

3

私が採用したアプローチは、履歴トークンをコードに保存することでした(提案されているように)。PlaceControllerを拡張し、それを使用してEventBusでのPlaceの変更を追跡しました。これで、PlaceControllerを使用していたすべての場所で、代わりにPlaceControllerExtを使用します。これには、元の場所に戻るための優れたprevious()メソッドがありますが、前方に移動してアプリケーションを離れることはありません。

public class PlaceControllerExt extends PlaceController {

  private final Place defaultPlace;
  private Place previousPlace;
  private Place currentPlace;

  public PlaceControllerExt(EventBus eventBus, Place defaultPlace) {

      super(eventBus);
      this.defaultPlace = defaultPlace;
      eventBus.addHandler(PlaceChangeEvent.TYPE, new PlaceChangeEvent.Handler() {

          public void onPlaceChange(PlaceChangeEvent event) {

              previousPlace = currentPlace;
              currentPlace = event.getNewPlace();
          }
      });
  }

  /**
   * Navigate back to the previous Place. If there is no previous place then
   * goto to default place. If there isn't one of these then it'll go back to
   * the default place as configured when the PlaceHistoryHandler was
   * registered. This is better than using History#back() as that can have the
   * undesired effect of leaving the web app.
   */
  public void previous() {

      if (previousPlace != null) {
          goTo(previousPlace);
      } else {
          goTo(defaultPlace);
      }
  }
}
于 2012-02-24T17:35:50.087 に答える
1

キャンセルする代わりにユーザーが戻るボタンを押すことができるので、どういうわけか追跡する必要があります。これは、実行されるアプリケーションにコードがないことを除いて、キャンセルをクリックするのと同じであり、制御できません。

次に、URLに履歴がある場合、ユーザーはそのページに直接移動でき、ユーザーが[OK]をクリックしたときにどこに移動するかを知っておく必要があります。または、ユーザーがそのページに直接移動した場合は、ユーザーを別のページにリダイレクトします。

1つのアプローチは、アクセスしたページの履歴トークンに戻り履歴トークンを保存することです。ページが終了すると、渡されたリターントークンに基づいて、そのページに戻ることができます(または技術的には「進む」ことになります)。(GWTを使用すると、履歴トークンをコードに簡単に保存できます)。

于 2011-10-06T12:49:35.123 に答える