動的 Web ページを設計する際に、他の方法で検証するデータにカスタム・バリデーターを使用したい場合があります。カスタム・バリデーターは、送信された値を確認し、その値の検証を実行します。例えば、送信された値に 9 つの数字が含まれていることをバリデーターが確認するように、カスタム・バリデーターを入力テキスト・フィールドに追加することができます。送信された値に 9 つの数字が含まれていない場合は、ページが表示された時点で、カスタム・バリデーターがエラー・メッセージを表示します。
次の手順により、Web プロジェクトでカスタム・バリデーターを作成できます。
- Web プロジェクトを作成する ()。
- 新規 Faces JSP ページを作成する ()。
- プロジェクト・エクスプローラー・ビューで、Web プロジェクト
の Java™ ソース・フォルダーを開く。
- Java ソース・フォルダーを右クリックし、次にをクリックする。
- 「新規 Java パッケージ」ダイアログで、
パッケージに validator と名前を付け、「終了」をクリックする。 validator という名前の新規パッケージが作成され、Java ソース・フォルダーに表示されます。
- validator という名前のパッケージを右クリックし、次にをクリックする。
- 「新規 Java クラス」ダイアログで、次のようにします。
- クラスに MyValidator という名前を付ける。
- 「追加」をクリックする。
- 表示された「実装されたインターフェースの選択」ダイアログの「インターフェースの選択」フィールドに、javax.faces.validator.Validator と入力する。
- 「OK」をクリックする。
- 「終了」をクリックする。 validator フォルダーに、ファイル
MyValidator.java が作成され、次のような Java コードが含まれています。
package validator;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
public class MyValidator implements Validator {
/* (non-Javadoc)
* @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
*/
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
// TODO Auto-generated method stub
}
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
System.out.println("my custom validator");
//TODO: Add your custom validation code here. This code will be execured during the validation
//phase of the JSF lifecycle. If any validation errors occur you can throw an exception message
//that in turn can be displayed using a h:message (or h:messages) component.
}
- 同じプロジェクトの WEB-INF フォルダーで、faces-config.xml という名前のファイルを開く。 ファイルに次のコードを追加します。
<validator>
<validator-id>MyValidator<validator-id>
<validator-class>validator.MyValidator<validator-class>
<validator>
- ステップ 2 で作成したページに入力テキスト・フィールドを追加する。
- ページのソース・モードで、validator タグを inputText の子として追加し、validatorId 属性を次のように "MyValidator" に設定する。
<h:inputText styleClass="inputText" id="text1"><f:validator validatorId="MyValidator"></f:validator></h:inputText>
- コマンド - ボタン・コンポーネントをページに追加する。
- サーバー上でページを実行する。コマンド・ボタンがクリックされると、コンソール上に "my
custom validator" が表示されます。