JSF標準バリデータでは、数値範囲および文字列長に関する一般的な検証チェックが提供されます。さらに複雑な検証規則およびチェックが必要な場合は、javax.faces.validator.Validator
インタフェースを実装するか、またはカスタム検証を実行するBeanメソッドを作成して、独自の検証コードを実装できます。検証に失敗した場合は、エラー・メッセージを表示します。
Validator
インタフェースの実装方法については、このトピックでは詳しく説明しません。簡単に説明すると、カスタム実装では、メソッドを定義して、Validator
インタフェースのvalidate
メソッドをオーバーライドします。javax.faces.validator.ValidatorException
を使用して適切な例外をスローし、javax.faces.application.FacesMessage
を使用して対応するエラー・メッセージを生成します。Validator
インタフェースおよびFacesMessage
の詳細は、javax.faces.validator.Validator
およびjavax.faces.application.FacesMessage
に関するJavadocを参照するか、またはjava.sun.comのWebページ http://java.sun.com/j2ee/javaserverfaces/にアクセスしてください。
アプリケーションで状態をクライアントに保存する場合は、カスタム・バリデータ実装がシリアライズ可能であるか、またはStateHolder
と、StateHolder
のsaveState(FacesContext)
メソッドおよびrestoreState(FacesContext, Object)
メソッドも実装する必要があります。詳細は、javax.faces.component
のStateHolder
インタフェースに関するJavadocを参照してください。
Validator
インタフェースを実装するときに、コンポーネントにバリデータを登録するためのカスタム・タグを作成するか作成しないかを選択できます。カスタム・タグを作成する場合は、タグの任意の属性に対する一連のアクセッサ・メソッドを実装に提供します。次に、JSFページで、カスタム・タグ属性を使用してバリデータのプロパティを構成します。たとえば、従業員番号入力フィールドに設定できる書式パターンをページ作成者が指定できるようにするとします。
<h:inputText id="empnumber" required="true">
<hdemo:emValidator emPatterns="9999|9 9 9 9|9-9-9-9" />
</h:inputText>
<h:message styleClass="vMsg" for="empnumber"/>
<af:inputText required="true"
secret="true"
label="Enter your password:"
tip="some tip">
<afdemo:validatePassword pwPatterns=" ..." />
</af:inputText>
カスタム・タグを作成しない場合は、バリデータ・プロパティを実装に定義する必要があります。次に、JSFページで、f:validator
またはaf:validator
タグを使用して、コンポーネント内にカスタム・バリデータをネストします。次に例を示します。
<h:inputText id="empnum" value="#{MyBean.enum}" size="5" ... >
<f:validator validatorId="customValidator" />
<f:attribute name="someName" value="someValue" />
</h:inputText>
<h:message styleClass="vMsg" for="empnum"/>
要約すると、アプリケーションでカスタム・バリデータを(カスタム・タグを使用してまたは使用せずに)使用するには、次の処理を実行する必要があります。
f:validator
タグをネストし、タグのvalidatorId
属性でバリデータの登録済IDを参照します。af:validator
タグを使用する場合は、binding
属性でValidator
を実装するオブジェクトへの値バインディングを指定できます。カスタム・タグを使用する場合は、コンポーネント内にカスタム・タグをネストし、タグに対する属性を指定します。
検証を実行するためにBeanメソッドを作成する方法は、特定のアプリケーション内で使用するカスタム・バリデータを提供する方法として適しています。これは、メソッドではクラスのその他のインスタンス・フィールドにアクセスできるためです。
Validator
インタフェースのvalidate
メソッドと同様に、Beanメソッドでは、検証対象のデータを含むFacesContext
、UIComponentまたはUIXComponent、および検証対象のデータを受け入れる必要があります。コンポーネントで検証Beanメソッドを使用するには、コンポーネントのvalidator
属性を使用して、メソッド・バインディング式を介してメソッドを参照します。
エラー・メッセージは通常、リソース・バンドルに格納されます。検証に失敗すると、通常は、FacesContext
インスタンスのメッセージをプログラムによってキューイングします。「カスタムJSFコンバータおよびバリデータに対するエラー・メッセージについて」を参照してください。
アプリケーションへのカスタムのコンバータまたはバリデータの登録
コンポーネントへのカスタム・バリデータ・インスタンスの登録
コンポーネントへの既存バリデータ・メソッドの登録
Copyright © 1997, 2006, Oracle. All rights reserved.