1

複数のエントリポイントを持つアプリケーションがあります。各EntryPointには、独自のPlaceHistoryHandler、PlaceHistoryMapper、およびPlaceControllerを備えたMVP構成が含まれています。履歴ハンドラーが構成された順序に応じて、場所の処理が重複します。この場所は別のEntryPointのPlaceHistoryMapperに関連付けられているため、PlaceHistoryMapperが場所を見つけられないときにPlaceHistoryHandlerの実装がPlaceController.goTo(NOWHERE)を呼び出すため、問題が発生すると思います。どうすればこの問題を解決できますか?複数のエントリポイントでMVPを使用するのは正しいですか?

詳細情報

トーマス、あなたの説明に感謝します。私たちのシーナリーはサーバー側のOSGIアプリケーションであり、アプリケーションモジュールはホットデプロイされ、独自のGWTビューとエントリポイントが含まれています。メインクライアントのGWTアプリケーションには動的なサイドメニューがあり、メインリージョンでレンダリングされたビューを持つ外部エントリポイントに関連付けられたトークンを指すハイパーリンクがあります。

  SIDE MENU
      |
      V
  -------------------------------------------
  |  A1  |                                  |
  |------|                                  |
  |  A2  |                                  |
  |------|                                  |
  |  B1  |                                  |
  |------|         MAIN REGION              |
  |  B2  |                                  |
  |------|                                  |
  |  C1  |                                  |
  |------|                                  |
  |  C2  |                                  |
  -------------------------------------------

この種のアプリケーションを解決するための正しいアプローチは何ですか?

4

1 に答える 1

0

次の 2 つのオプションがあります。

(ア)

サイド メニューに PlaceController を使用しないでください。モジュール内の場所へのリンクを含むウィジェットにします。このウィジェットを各モジュールに含めることができます。メニュー項目をクリックすると、ページ全体がリロードされます。これにより、ブラウザの履歴が期待どおりに機能します。

(ロ)

アプリを再構築できない場合は、Launchpad/スタート メニュー アプローチの使用を検討してください。ユーザーが利用できるアプリの素敵なメニューを表示する単一のビューで、メイン エントリ ポイントを作成します。各メニュー項目は基本的に、対応するモジュール (エントリ ポイント) の開始 URL へのリンクです。ユーザーがそれをクリックすると、このモジュールが読み込まれ、画面全体が占有されます。また、ランチパッドに戻るためのアイコンを各モジュールに追加します。

このようにして、ユーザーはランチパッドをブックマークしたり、任意のモジュールを直接ブックマークしたりできます。

このアプローチでは、URL 履歴が期待どおりに機能することに注意してください。つまり、ユーザーが Launchpad -> A1 -> A2 -> Launchpad -> B1 などに移動した場合、ユーザーが戻るボタンを押すと、ブラウザーは 1 ステップ戻ります。

または、各モジュールを新しいブラウザー タブで開くこともできます。おそらく、設定のどこかで同じタブまたは新しいタブを選択するオプションをユーザーに提供できます。

スマートフォンとタブレットのすべてのユーザーは、Launchpad/スタート メニュー アプローチに慣れ親しんでいることに注意してください。これは、Mac OS と、間もなく Windows 8 でも使用されます。追加の利点は、各モジュール/アプリを操作するためのより多くの画面スペースがあることです。

于 2012-09-12T12:24:42.633 に答える