検索
特集

StrutsとJSFは共存、統合どちらへ(7/8 ページ)

フレームワークのStrutsとJSFは目的が似ている。しかし、JSFは後発ながらJCPのJava標準規格として登場した。新たなテクノロジーは、完全に補完する役目を担うのか? コードベースで徹底比較していく。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

ビジネスロジックの呼び出し

 JSFでは、BackingBeanにビジネスロジック(またはビジネスロジックを呼び出す処理)を記述する。ビジネスロジックとなるメソッドは、戻り値をjava.lang.String型で実装しなければならない、というルールがある。この文字列は、画面遷移の設定で参照されるフラグのようなものだ。リスト14は、ビジネスロジックとしては何も処理を行わず、単純に"success"という文字列を返すだけの実装例だ。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

画面の作成

 JSFには、UIコンポーネントを実装したタグライブラリが標準で用意されており、カスタムタグを使ってUIコンポーネントを配置したJSPページを作成する。リスト15は、実行時の見た目がリスト6とほぼ同一だが、JSFカスタムタグを使って実装されている。h:inputText タグがテキストボックスに相当するUIコンポーネントタグであり、value属性の"#{WelcomeBean.userName}"という設定によって、登録名"WelcomeBean"というBackingBeanのプロパティ"userName"にバインド(関連付け)されている。

 また、h:commandButton タグはsubmitボタンに相当するUIコンポーネントを配置するタグだ。JSFではイベントモデルが採用されており、どのボタンが押下されたらどのような処理を行うのかをaction属性設定で行う。

 この実装例では、ボタンと、登録名"WelcomeBean"というBackingBeanのメソッド"doBizLogic"がバインドされている。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 リスト16は、ようこそ画面のJSFによる実装例だ。h:outputText タグが画面出力を行うタグであり、value="#{WelcomeBean.userName}" という設定により、WelcomeBean の userName というプロパティにバインドされている。

 JSFではハイパーリンクを生成するタグは h:commandLink になる。またaction属性には "Back" という文字列が設定されているが、これは画面遷移の設定で参照されるフラグとなる。入力画面の h:commandButton のように、BackingBean のメソッドにバインディングすることもできる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

画面遷移の設定

 JSFでは、/WEB-INF/faces-config.xmlの <navigation-rule> 要素で画面遷移の設定を行う。Strutsと違い、JSFでは遷移元の画面ごとに設定を行う(Strutsではリクエストパスごとに設定する)。

 リスト17にある1つ目の設定は、遷移元の画面が/index.jspであり、要求される画面遷移フラグが"success"の場合、"/welcome.jsp"へ遷移する設定例だ。画面遷移フラグの文字列はUIコンポーネントにaction属性で指定された文字列(メソッドがバインドされている場合はメソッドの戻り値)である。2つ目の設定は、遷移元の画面が /welcome.jsp であり、要求される画面遷移フラグが "Back" である場合、/index.jsp へ遷移するよう設定されている。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

メッセージリソースファイルの作成

 JSFでもエラーメッセージ等はメッセージリソースファイルに記述する。ファイル名とデプロイ場所はfaces-config.xmlの <message-bundle> 要素に指定する。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

入力値の検証

 JSFでも、Strutsと同様にクライアントからの入力値妥当性検査の仕組みが提供されている。JSFでは、カスタムタグやカスタムタグのオプション設定により、UIコンポーネントに対して入力値検証の設定を行う。JSF標準では、未入力検査、文字列長検査、値の範囲検査(整数型、小数点型)が用意されている。カスタムバリデータと呼ばれる、自作の検証ロジックを実装することも可能だ。リスト19は、テキストボックスに未入力検査と入力可能な文字列長を1文字から64文字と設定した例だ。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


画面■未入力の場合の実行例(JSF)

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る