Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


10.5.1 JSFからBean Validationの利用手順

ここでは,JSFからBean Validationを利用するための手順を示します。

〈この項の構成〉

(1) 使用前提条件

JSFでBean Validationによる検証処理を行うためには,次の条件を満たす必要があります。

(2) 検証処理の動作

Bean Validationの検証処理の動作は,JSFが提供するコンテキストパラメタの値によって異なります。javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATORの設定値とBean Validationのアノテーションを定義しているManagedBeanに対する<f:validateBean>タグの有無によって,次の表に示すように動作が変わります。

表10‒4 javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATORの設定値と検証処理の関係

javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATORの設定値

入力値

<f:validateBean>タグの指定の有無(disabled属性を指定していない場合)

Bean Validationによる検証処理の有無

true

あり

あり

なし

なし

false

あり

あり

なし

あり

値を指定しなかった場合(デフォルト)

falseの場合と同様

falseの場合と同様

<f:validateBean>タグの使用方法の詳細に関しては,JSFの標準仕様を参照してください。ManagedBeanの変数に対するバリデーション定義の方法は,Bean Validationの標準仕様を参照してください。

(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メソッド
   :
}