私が取り組んでいる Web プロジェクトの複雑さが増すにつれて、MVC 構造を含める必要性がますます緊急になっています。私のモデル クラスは適切に定義されていますが、ビューとコントローラーのコードは一緒になってしまう傾向があります。私はサイトでもかなり重い AJAX を使用しており (主に RichFaces jsFunctions)、状況が少し複雑になっています。
JSF2 を使用して MVC を実装するための優れた戦略を見つけた人はいますか? プロジェクトに別のフレームワーク (Spring MVC など) を導入したくありません。
これまでのいくつかのアイデアのうち、まだ始めていないもの
- 重い ajax を使用するページの場合、選択したタブ、選択した項目を記憶し、フィルター処理されたデータのリストを提供するための「ビュー」Bean を用意します。
- モデルの変更などのアクションを処理する「コントローラー」Bean を用意する
- JSF ページとコントローラの間を行き来する「コマンド」Bean があります。jsFunction はコマンド Bean にパラメーターを設定し、呼び出し
command.execute()
により、コマンド Bean はコントローラー Bean の正しいメソッドを呼び出してアクションを実行します。「コマンド」Bean には、完了時に呼び出される JavaScript が含まれている場合があります。また、再レンダリングするページの領域を指定することもできます。
何かご意見は?
編集
私がよく目にするのは、ユーザーの選択を追跡し、モデルを更新し、フィルターされたリストを取得するなど、 あらゆることを行うマネージド Beanです。
現時点では JSF 1.2 を使用しているため、アクション/アクションリスナーをパラメーターで使用することはできません。たとえば、マネージド Bean にはm_selectedDate
、 への呼び出しで選択された日付をバックエンドに供給することだけを目的とするような変数が含まれていますupdateFilteredItemsBasedOnDate()
。余分な変数は一時的なものにすぎないので、なくなるといいですね。パラメータ付きのJSF 2のELが役立つはずですが、代替ソリューションが利用可能かどうか知りたいです。
MVC をマネージド Bean に適用する方法や、すべてを実行しようとする大きな Bean にならないように関心を分離する方法があるかどうか、興味があります。