検索
特集

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

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

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

画面遷移の設定

 Strutsの画面遷移は、Struts設定ファイルの <action-mappings> 要素で行う。キーとなるのは、リクエストパスだ。

 どのようなリクエストパスが要求された場合に、どのActionFormを使い、どのActionを実行し、そしてどのパスに遷移するのかを設定する。このリクエストパスは、クライアントからのリクエストがフォームのsubmitである場合、html:formタグのaction属性の値と一致する。

 リスト8は、リクエストパス"/input"が入力要求された場合に処理される。入力値を保持するActioFormに登録名"WelcomeForm"というActionFormを使うと、study.struts.action.WelcomeAction クラスのexecute()メソッドが実行され、このexecute()メソッドから"success"という名称で登録されたActionForwardが返された場合、"/welcome.jsp"にフォワードする設定例だ。

 この設定例ではActionFormのスコープはrequestとしている。

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

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

 Strutsでは、エラー時に表示するメッセージなどをメッセージリソースファイルという、外部プロパティファイルに記述する。ファイル名とデプロイ場所はStruts設定ファイルの <message-resources> 要素にparameter属性で指定するのだ(この値に拡張子.propertiesを付加してファイル作成)。

 値をドットで区切ると、パッケージツリーと同じ扱いになるので、リスト9のように設定した場合は、パッケージツリーのresourcesディレクトリに、application.propertiesというファイルを作成する。

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

入力値の検証

 Strutsでは、クライアントからの入力値妥当性検査の仕組みとして、Validator機能が用意されている。

 検査のルールは、未入力検査、文字列長検査、書式の検査など、標準で18種類(非推奨を含めると20種類)が用意されている。標準で用意されているルールのみで要件を満たすことができなければ、ルールを自作することも可能だ。StrutsのValidatorは、すべて設定ファイルベースで検査の設定を行うのが特徴なのだ。

 設定ファイルに検査ルールを登録し、フォームとプロパティ、そしてルールそれぞれの適用を設定する。設定ファイルによる一元管理と、ルールの修正、追加などの際にアプリケーションのソースコードに手を入れる必要がないのがメリットといえる。リスト10は、WelcomeFormのuserNameというプロパティに、未入力検査のルール"required"と、最大文字列長検査のルール"maxlength"を適用した設定例だ。

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


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

JSFアプリケーションの作成

  • web.xmlの作成

 JSFもまた、Strutsと同様にクライアントからのリクエストはひとつのServletで処理するアーキテクチャを採用している。web.xmlにjavax.faces.webapp.FacesServletをFaces ServletというServlet名で登録し、URLパターン /faces/* を設定するのが一般的だ。FacesServletも、StrutsのActionServletと同様にコンテナ起動時に初期化されるよう、<load-on-startup> 要素を設定する。

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

 リスト11の作成例では、そのほかにfiterの登録、設定とウェルカムファイルリストの登録、カスタムタグのための <taglib> 要素の設定が行われている。

BackingBeanの作成

 JSFでは、クライアントで入力された値はUIコンポーネントで保持し、BackingBeanと呼ばれるJavaBeansに値がコピーされる。リクエストパラメータは基本的に文字列型だが、BackingBean のプロパティを数値型や日付型等で作成した場合、コピーされる時に数値型や日付型など、任意の型へ変換させることができる。

 BackingBeanの作成方法は、通常のJavaBeansと変わらない。リスト12は、userName という java.lang.String 型のプロパティを持ったBackingBeanの実装例だ。

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

 作成したら、faces-config.xml の <managed-bean> 要素に名前を付けて登録する。JSFでは、このBeanのスコープもここで設定する。リスト13は、WelcomeBean という名前で登録した実装例だ。スコープはrequestとしている。

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

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る