JSF Validator入門 - 標準Validator及びその使い方
2009/06/22 18:26Update
JSFでは、バリデーションというユーザ入力値をチェックするための仕組みを提供しています。入力値が無効の場合、画面に再入力を促すメッセージを表示します。
ライフサイクルにおけるバリデーション・フェーズの役割
<<図>>
JSF Validatorの特徴
◇ サーバサイドで実行。JSF Validatorはサーバサイドで実行されます。
◇ コンポーネントとのバインド。一つのコンポーネントは複数のValidatorとバインドできます。
◇ バリデーションエラー時のエラーメッセージ処理。バリデーションエラー時、FacesContextにエラーメッセージを登録し、JSPにて表示します。
◇ バリデーションエラー時処理の自動中断。バリデーションエラー時、JSFのライフサイクルを中断し、Render Response Phaseにジャンプして処理終了します。
◇ JSFの標準Validator。JSFでは、数値(long, double)の最大・最小値チェック、文字列のレングス・チェック、必須チェックなどの標準Validatorが提供されています。
◇ Validatorのカスタマイズ。カスタムのValidator定義もできます。カスタムのValidatorは2種類があり、一つはMethod Validator(メソッド・レベルのバリデータ)、もう一つはjavax.faces.validator.Validatorを実装したクラスレベルのValidatorです。
JSF 標準Validator
■ validateDoubleRange
入力値の範囲チェック。入力値は数値、もしくはDouble型の数値に変換できるものでなければなりません。
◇タグ:
f:validateDoubleRange
◇属性:
maximum="最大值"
minimum="最小值"
◇Validator ID:
javax.faces.DoubleRange
◇Validatorクラス:
javax.faces.validator.DoubleRangeValidator
■ validateLongRange
入力値の範囲チェック。入力値は数値、もしくはLong型の数値に変換できるものでなければなりません。
◇タグ:
f:validateLongRange
◇属性:
maximum="最大值"
minimum="最小值"
◇Validator ID:
javax.faces.LongRange
◇Validatorクラス:
javax.faces.validator.LongRangeValidator
■ validateLength
入力値の長さ(レングス)チェック。入力値は文字列、もしくは文字列型の値に変換できるものでなければなりません。
◇タグ:
f:validateLength
◇属性:
maximum="最大值"
minimum="最小值"
◇Validator ID:
javax.faces.Length
◇Validatorクラス:
javax.faces.validator.LengthValidator
■ required Validator
required ValidatorはJSFタグに定義する必須チェックを行うためのバリデータです。
JSFでは、以下のタグにrequired属性をつけることで、必須チェックを行うことができます。
<h:inputHidden required="true/false"></h:inputHidden>
<h:inputSecret required=“true/false”></h:inputSecret>
<h:inputText required=“true/false”></h:inputText>
<h:inputTextarea required=“true/false”></h:inputTextarea>
<h:selectBooleanCheckbox required=“true/false”></h:selectBooleanCheckbox>
<h:selectManyCheckbox required=“true/false”></h:selectManyCheckbox>
<h:selectManyListbox required=“true/false”></h:selectManyListbox>
<h:selectManyMenu required=“true/false”></h:selectManyMenu>
<h:selectOneListbox required=“true/false”></h:selectOneListbox>
<h:selectOneMenu required=“true/false”></h:selectOneMenu>
<h:selectOneRadio required=“true/false”></h:selectOneRadio>
JSF Validatorの使用
■Method Validator(メソッドレベルのバリデータ)
JSP例:
<h:inputText value="#{mybean.someValue}" validator="#{mybean.validateXxxx}"/>
validator属性に#{mybean.validateXxxx}を指定することで、該当入力値はmybeanのvalidateXxxxメソッドにチェックされるようになります。
Java Managed Bean例:
public void validateXxxx(FacesContext context,
UIComponent component, Object value){
String text = value.toString();
if(!text.equals("xxxx")){
throw new ValidatorException(new FacesMessage("some message"));
}
}
メッセージ表示について、後ほど解説します。
■Validatorタグ
使い方例(JSP):
<h:inputText id="xxxxValue" value="#{mybean.xxxxValue}" required="true">
<f:validateDoubleRange maximum="5"></f:validateDoubleRange>
</h:inputText>
<h:message for="xxxxValue"></h:message>
※idはxxxxValueのテキストボックスの入力値の最大値は5に指定します。
※バリデータエラーの場合、<h:message />タグを使ってエラーメッセージを表示します。
■Validator ID
上の「JSF 標準Validator」節にて、Validator IDというものが書かれています。この「Validator ID」は何でしょう。
実は、<f:validator validatorId="ValidatorID" />という汎用的なバリデータタグがあり、validatorId属性に「Validator ID」を指定して、バリデーションを行うことができます。
※validatorIdはjavax.faces.validator.Validaotrを実装したクラスを指します。
※validatorIdはfaces-config.xmlにて登録する必要があります。
<validator> <validator-id>MyValidator</validator-id> <validator-class>com.mypackages.MyValidator</validator-class> </validator>
※<f:validator />タグはMethod Validatorと同様(他のJSF Validatorタグと違って)、パラメータを指定することはできません。
カスタムValidatorについて、他の記事にて解説したいと思います。
参考資料
JSF メッセージ処理 概要
Sponsored Link
- Relative Articles
- JSFプロジェクト階層構造例 - (2009/06/20 16:39)
- JSFのインストール - 初めてのJSFアプリ作成・実行 - (2009/06/23 16:24)
- ライフサイクルから理解するJSFの仕組み - (2009/06/24 17:43)
- JSF開発におけるweb.xmlの基本的な設定方法 - (2009/03/13 18:13)
- JSF Webページ(JSP)の基本的な書き方 - (2009/03/16 11:58)
- JSF Managed-Beanの定義・設定・使い方 - (2009/03/16 14:48)
- JSF メッセージ処理 概要 - (2009/06/20 20:01)
- JSF Converter入門 - 標準Converter及びその使い方 - (2009/06/23 17:17)
- JSF画面遷移 - (2009/06/24 18:08)
- JSFで複数ボタンでの Validator問題 - (2009/09/02 17:58)