30

Vaadin 7 では、Web アプリケーションは複数のエントリ ポイントを持つことができます。UI。各UIは、 Viewを含む単一のNavigatorのみを持つことができます。

マルチレベルのナビゲーションを必要とするアプリケーションに取り組んでおり、一部の画面では、ナビゲーターを備えた単一の UI を使用するか、共有メニュー コンポーネントを使用して複数の UI を使用するかがわかりません。

UI と Navigator の長所と短所は何ですか? この選択に関するガイドラインはありますか?

4

2 に答える 2

15

私の意見では、仕事をするのに十分なので、Navigator で 1 つの UI を使用することをお勧めします。多くの UI の主な不便さは、切り替え時のリロードです。また、望ましい一貫性について覚えておく必要があります。各 UI で同じヘッダーを持つようにします。そして、私の経験から、あなたは確かにより多くの問題に遭遇するでしょう;-)

きれいにするには、MVP パターンを使用する必要があります。イベントを処理するために、com.google.common.eventbus.EventBus でこれと同様のものを使用します。ビューに eventBus を追加し、そこにイベントを投稿し、適切なプレゼンターで処理します。ビューにリスナーを実装するのではなく、より問題があると考えています。MVP は既に「プレゼンター」と「ビュー」を予約しているため、Vaadin ビューを「ページ」と呼びます。

ヘッダー、フッターのメイン メニュー、コンテンツ コンテナー (レイアウトなど) を作成して、ナビゲーターを次のように配線できます。

Navigator n = new Navigator(UI.getCurrent(), layout);

ナビゲーションを管理するために PagesEnum を作成し、ビューを変更するときに PageEnum.SOME_PAGE をパラメーターとして取得する ChangePageEvent を投稿します。オプションで、表示するアイテムの ID もあります。したがって、MainPresenter には次のものがあります。

@Subscribe
public void changePage(ChangePageEvent event) {
    String url = event.getPageName();
    if (event.hasId()) {
        url += "/" + event.getEntityId();
    }
    navigator.navigateTo(url);
}

次に、さまざまな可能性があります。

  • ページの enter メソッド (Vaadin ビュー) で、適切なサブメニューが表示されていることを確認します。

  • ChangePageEvent にパラメータとして追加し、changePage メソッドで処理します。

  • PageEnum に新しいフィールドとしてハードコードします。subMenu を作成し、サブメニューの他の列挙型を作成し、changePage メソッドで処理します。

サブメニューはおそらく Navigator を接続するコンテナの外にあるため、そこで SubMenuPresenter と SubMenuView を作成してサブメニューの変更を処理できます。

于 2014-01-03T15:26:29.323 に答える