BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Spring Web FlowがJSFナビゲーションと状態管理の機能を強化

Spring Web FlowがJSFナビゲーションと状態管理の機能を強化

Java Server Facesでのナビゲーションのサポートは、長い間不満の種であった。Ignacio Coloma氏は、去年の秋、自身のフラストレーションを次のように書いている。 
(中略)初めはシンプルでした。コンポーネント、レンダラ、バリデータ、コンバータモデルは、作って実行するのに単純で簡単なものです。バリデーションモデルは、まるで魔法のように作用し、JSPページが最小限で済むので、すぐにアプリケーションのスケルトンを動作させることができます。しかし、そこからがリンクページ地獄の始まりなのです。(中略)

Webアプリケーション開発者であるMatt Raible氏も、次のようにコメントしている。

(中略)もしJSFを使うなら、Facelets、Shale、Seam等を強くお勧めします。FaceletsかShaleには、問題があります。それは、それらのプロジェクトの活動が、あまり見られないということです。Shaleの方は、まだ開発者がいるので、めったに使用することがないものの、質問に対する回答は得られるでしょう。しかしながら、Faceletsの方は、"開発者離れ"に悩まされているように思われます。

結論として、JSFは、"標準"なのでそのまま使用してはいけません。もっと活発に開発していて、Webに対しての設計が行われている他のフレームワークを使用すべきです。コンポーネントベースのフレームワークで言えば、TapestryとWicketがあります。次に有名なものとして、RIFEとClickがあります。まだ、JSFを使用したいのなら、Seamを使用するべきでしょう。しかし、あくまで標準なので、そのままで使用しないで下さい。(中略)

各企業や団体は、JSFの修正や機能強化に積極的に取り組んでおり、JBoss SeamはJSFをベースで、Spring Web FlowはJSFをサポートしている。最近、Interface21のKeith Donald氏が、ナビゲーションロジックの実装やアプリケーションの状態を管理するためのよりよいモデルを作るために、Spring Web FlowとJSFをどのように統合させるかということに関して、次のように書いている。

    JSFの拡張として、Spring Web Flowは、ナビゲーションルールとユーザインタラクション(別名、カンバセーション)に関する状態管理を行っています。JSFの開発者は、Spring Web Flowによって機能強化されたナビゲーションモデルの恩恵を得られます。Web Flowの要約は、次のとおりです。
    • 動的なナビゲーションルールの変更が、サーバを再起動することなく、都度変更することが可能
    • フォワード、バックワード、リフレッシュ、リダイレクト、リカーシブといったナビゲーションを、Spring Web Flowで定義された言語により作成可能
    • フロー定義という考え方に基づき、ナビゲーションロジックのモジュール化、カプセル化が可能

    状態管理に関して、Web Flowでは、sessionやapplicationといったJSFの標準的なリクエストであるに加え、conversation、flash、flowといったスコープを追加しています。

Donald氏の記事に対して、Matt Raibleは、次のように言っている

(中略)Interface21やJBossが、JSFに関する問題を数多く解決しているということに関し、私は、興味深いことだと思います。JSFをサポートすることで収入が得られるか?という問いに対して、実際に彼らが何を行っているかというと、自身が持っているJSFの問題を克服するためのソリューションを、コミュニティに対して無料でコントリビュートしているのです。冷静にみれば、両者の団体が、次バージョンのJSFで問題を解決しようとしているという現実があります。私が思うに、これは、全ての人にとってメリットのあることだと思います。
(原文は2007年4月25日にリリースされた記事です)

この記事に星をつける

おすすめ度
スタイル

BT