0

MVPパターンを使用してGWTアプリを開発しようとしています。これまでのところ、アクションの1つの特定のケース、つまりURLを変更しない(ブラウザーの履歴は変更されない)アクションを除いて、これまでのところ良好です。

GWT MVPパターンでは、イベントはプレゼンターから送信され、アプリコントローラーがそれらをキャッチしてブラウザーの履歴を更新します。履歴が変更された場合は、ビューが更新されます。

**履歴が変更されたMVP(うまく機能します)**

Current URL is /list
User clicks on contactdelete button.
Fire DeleteContactAction event.
App controller catches, change history to 'delete'
onValueChange is called
if (token.equals("delete")) 
delete contact screen, then delete contact
Fire ContactDeletedEvent 
app controller catches and change the history to list 
onValueChange is called: contact list refreshes

履歴変更なしのダイアログボックスのGWTMVPパターン

**問題**-ダイアログボックスを使用していますが、ブラウザの履歴を変更したくないので、ここに問題があります。

  Current URL is /list
  User clicks on contactdelete button.
  Contact is deleted
  Fire ContactDeletedEvent.
  App controller catches, change history to 'list'
  **onValueChange is NOT called** because url is already /list and there is no change
  # problem: contact list does not refresh

質問:MVPのコンテキストでこれを実装するためのパターンを知っている人はいますか?

どんな助け/アイデアもありがたいです。

4

2 に答える 2

0

履歴の変更を自動的に行うフレームワーク (GWT 以外) を使用していますか?

通常の GWT/MVP では、履歴を変更する必要はありません。実際、通常、履歴自体を更新するのはアプリ次第です。

履歴を変更せずにアプリの状態を更新する場合は、EventBus を使用して、アプリの他の要素がサブスクライブできるイベントを公開し、履歴を変更せずにアプリの状態を更新できます。

于 2010-04-14T05:07:11.193 に答える
0

基本的に、独自の PlaceHistoryHandler を作成する必要があります。カスタム PlaceHistoryHandler は特定のタイプの PlaceChangeEvent を無視します (つまり、ヒストリアンを更新しません)。

于 2011-03-13T19:04:37.340 に答える