MVPパターンを使用してGWTアプリケーションを作成しています。DockLayoutPanelを使用するインデックスページがあります。dockLayoutPanelの各セクション(例:NorthViewとNorthPresenter)のビューとプレゼンターがあります。中央のパネルに4つのボタンがあります(NorthBtn、EastBtn、WestBtn、SouthBtn)。dockLayoutPanelのそれぞれのセクションでUIを変更する必要があるボタンのいずれかをonClickします。
エントリポイントクラス:
@Override
public void onModuleLoad() {
RPCServiceAsync rpcService = GWT.create(RPCService.class);
HandlerManager eventBus = new HandlerManager(null);
AppController appViewer = new AppController(rpcService, eventBus);
appViewer.go(RootLayoutPanel.get());
}
AppControllerクラスには、履歴管理およびイベント処理ロジックのロジックがあります。(Googleの記事から-プレゼンターに固有ではなく、代わりにアプリケーション層に存在するロジックを処理するために、AppControllerコンポーネントを紹介します。)
たとえば、中央のパネルにあるEastBtnのonClickで、新しい履歴トークン「east」を追加すると、onValueChange()メソッドが呼び出されます。それぞれのプレゼンターとビューが作成されます。たとえば、EastViewとEastPresenterは次のようになります。
- 新しく作成したパネルで既存のEastPanelを更新するにはどうすればよいですか(古いパネルへのハンドルがないため)?
- ユーザーがボタンをクリックした後にページをブックマークし、ブックマークされたリンクでページに再度アクセスした場合、フローはonValueChangeメソッドに到達し、EastViewとEastPanelを作成します。しかし、ページの残りの部分をどのように再作成し、EastPanelを更新することができますか?