it-swarm-ja.com

JSFでは、PhaseListenersのようなオブジェクトはMVCパターンのどこに適合しますか?

JSFに関しては、作成した特定のオブジェクトがMVCパターン全体のどこに収まるかを区別するのに苦労しました。ビューは.xhtmlテンプレートによって処理されるため、十分に単純ですが、次のようなオブジェクトに関しては次のようになります。

  • アクション/リスナーの変更
  • PhaseListeners
  • バリデーター
  • ナビゲーションBean
  • コンバーター
  • フィルター

最初は、これらのいくつかはコントローラーに属していると思いますが、MVCフレームワーク、特にJSFを使用するほとんどの開発者にとって、コントローラーの過半数/全体がすでにフレームワークによって実装されます。

次のQ&A: https://stackoverflow.com/questions/10111387/understanding-jsf-as-a-mvc-framework 非常に有益ですが、それでもこの問題についてはかなり漠然としています。受け入れられた回答は、JSFのコンシューマーはコントローラーを実装しないと述べていますが、回答の下部にリンクされている論文は、リスナーがコントローラーパターンの一部であると明確に述べています。

2
TEL

本質的に、あなたが提供したリンクで受け入れられた答えは正しいです。 MVCパターンは、M、V、およびCがすべて互いに直接通信できることを考慮する場合にのみ意味があります。これはデスクトップアプリケーションで可能ですが、Webは本質的にステートレスであり、要求応答ベースです。 JSFおよびその他のコンポーネントベースのWebフレームワークは、そのギャップを埋めようとしています。これは、FacesServletでビルド済みのコントローラーを提供することで実現します。

それでは、Managed BeansとPhaseListenersは何になりますか? BalusCはここで最高だと言います:

https://stackoverflow.com/questions/5104094/what-c​​omponents-are-mvc-in-jsf-mvc-framework

すべてのJSFコードの組み合わせは、MVCパターンの従来のビューと見なすことができます。ビューモデルはエンティティであり、ビューロジックはマネージドBean、コンバーター、EL式、バリデーター、そして最後にPhaseListenersです。これらは、ビュー自体とViewModelを操作する処理ロジックに関してのみ違いをもたらします。

M-アプリケーション層とDAO層(M-エンティティ、V-JSF Marktup、C-JSFコードとロジック)C-FacesServlet

1
maple_shaft