10.5.1 JSFからBean Validationの利用手順
ここでは,JSFからBean Validationを利用するための手順を示します。
- 〈この項の構成〉
(1) 使用前提条件
JSFでBean Validationによる検証処理を行うためには,次の条件を満たす必要があります。
-
WebページはFaceletsで作成してください。
-
ManagedBeanの中でBean Validationのアノテーションを利用して,制約を定義してください。
(2) 検証処理の動作
Bean Validationの検証処理の動作は,JSFが提供するコンテキストパラメタの値によって異なります。javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATORの設定値とBean Validationのアノテーションを定義しているManagedBeanに対する<f:validateBean>タグの有無によって,次の表に示すように動作が変わります。
javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATORの設定値 |
入力値 <f:validateBean>タグの指定の有無(disabled属性を指定していない場合) |
Bean Validationによる検証処理の有無 |
---|---|---|
true |
あり |
あり |
なし |
なし |
|
false |
あり |
あり |
なし |
あり |
|
値を指定しなかった場合(デフォルト) |
falseの場合と同様 |
falseの場合と同様 |
(3) 実装例
JSFからBean Validationを使用する場合の実装例を示します。
まず,検証が必要な情報を登録するFaceletsページの実装例を示します。
<f:view> <h:form> IDの入力<br/> <h:inputText id="IDBox" value="#{personalData.id}" /><br/> <h:message for="IDBox"/><br/> <br/> <f:validateBean disabled="true"> 名前の入力(検証処理は行いません)<br/> <h:inputText id="NameBox" value="#{personalData.name}" /><br/> </f:validateBean > <br/> 年齢の入力<br/> <h:inputText id="AgeBox" value="#{personalData.age}" /><br/> <h:message for="AgeBox"/><br/> <br/> <br/> : : </h:form> </f:view>
- 注意事項
-
<f:validateBean disabled="true">を指定している<inputText>タグは,対応するManagedBeanの変数にバリデーションの定義をしていますが,検証処理は行われません。
次に,検証対象のデータを格納するManagedBeanに対するバリデーション定義の実装例を示します。
@ManagedBean(name="personalData") @SessionScoped public class PersonalData { @Size(min=8,max=12, message="8から12文字までの文字列を入力してください。") private String id = ""; @Size(min=1,message="名前を入力してください。") private String name = ""; @Max(value = 150, message="年齢の入力が正しいか確認して下さい。") @Min(value = 0, message="0歳以上の年齢を入力してください。") private int age = 0; : setter/gettterメソッド : }