動的 Web ページを設計する場合は、
別の方法で検証していたデータでもカスタム・バリデーターを使用できます。
カスタム・バリデーターは、実行依頼されたデータを調べて、そのデータについて妥当性検査を行います。
例えば、入力テキスト・フィールドにカスタム・バリデーターを追加して、
実行依頼された値に 9 つの数値が含まれていることを確認する場合に、
実行依頼された値に 9 つの数値が含まれていないと、
ページの提供時にカスタム・バリデーターがエラー・メッセージを表示します。
以下の手順は、Web プロジェクトにカスタム・バリデーターを作成する方法の 1 つです。
- Web プロジェクトを作成する ()。
- 新規の Faces JSP ページを作成する ()。
- 「プロジェクト・エクスプローラー」ビューで、Web プロジェクトの「Java™ ソース」フォルダーを開く。
- 「Java ソース」フォルダーを右クリックしてから、をクリックする。
- 「新規 Java パッケージ」ダイアログでパッケージに「validator」と指定して、
「終了」をクリックする。 「validator」という名前の新しいパッケージが作成され、
「Java ソース」フォルダーに表示されます。
- その「validator」という名前のパッケージを右クリックして、の順にクリックする。
- 「新規 Java クラス」ダイアログで、以下を行います。
- クラス名として「MyValidator」を指定する。
- 「追加」をクリックする。
- 表示される「実装されたインターフェースの選択」ダイアログの「インターフェースの選択」フィールドに、
「javax.faces.validator.Validator」と入力する。
- 「OK」をクリックする。
- 「終了」をクリックする。 この MyValidator.java ファイルは「validator」フォルダー内に作成され、
次のような 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: カスタム妥当性検査コードをここに追加してください。このコードは JSF ライフ・サイクルの妥当性検査
// フェーズで実行されます。検証エラーが起った場合は、例外メッセージをスローできます。
// 言い換えると、h:メッセージ (複数も可) コンポーネントを使用して使用できます。
}
- 同プロジェクトの「WEB-INF」フォルダーで、faces-config.xml という名前のファイルを開く。 このファイルに次のコードを追加する。
<validator>
<validator-id>MyValidator<validator-id>
<validator-class>validator.MyValidator<validator-class>
<validator>
- ステップ 2 で作成したページに、入力テキスト・フィールドを追加する。
- ページの「ソース」モードで、以下のように、inputText の子として
validator タグを追加し、validatorId 属性を以下のように「MyValidator」に設定する。
<h:inputText styleClass="inputText" id="text1"><f:validator validatorId="MyValidator"></f:validator></h:inputText>
- ページに「コマンド - ボタン」コンポーネントを追加する。
- サーバーでこのページを実行する。
コマンド・ボタンをクリックすると、
コンソールに「my custom validator」と表示されます。