すべての Faces 入力コンポーネントに拡張検証機能を設定することができます。例えば、「日付/時刻の入力」コンポーネントに、最小値を「2003/01/01」に設定し、最大値を「now」に設定して、検証を設定することができます。
ここでは、入力コンポーネントに対するクライアントおよびサーバーの検証の基本ステップを説明します。
- Faces JSP ファイルを作成します。
- 「入力」コンポーネントを Faces JSP ファイルにドラッグします。
- 「入力」コンポーネントのプロパティー・ビューで、フォーマット・リストの「ストリング」、「数値」、「日付/時刻」、または「マスク」を選択します。
- 同じプロパティー・ビューの「検証」タブで、入力が実行されたときのサーバーの検証属性を設定することができます。
- ユーザーがこの「入力」フィールドに値を入力する必要がある場合は、「値を必須にする」をチェックします。
- 「最小値」および「最大値」を入力します。「ストリングの入力」コンポーネントと「マスクの入力」コンポーネントについては、許される最大文字数と最小文字数を入力します。「日付/時刻の入力」コンポーネントについては、許される最も古い
(最小) 日付/時刻と最新の (最大) 日付/時刻を入力します。また「now」を値として入力することもできます。「数値の入力」コンポーネントについては、許される最低の
(最小) 数値と最高の (最大) 数値を入力します。
- 「エラー・メッセージ・コントロールで検証エラー・メッセージを表示 (Display validation error messages in an error message control)」をチェックして、この入力コンポーネントにバインドされて、検証が失敗した場合にはエラー・メッセージを表示できるエラーの表示コンポーネントを作成します。「入力コンポーネント・エラーの表示」コンポーネントは、ページ上の「入力」コンポーネントの横に作成されます。
- 「ストリングの入力」コンポーネントがある場合、メニューから「制約」を選択できます。次の選択項目があります。「制限なし」、「英字のみ」、「数字のみ」。「制限なし」がデフォルトであり、英数字を使用できます。
クイック編集ビューの値の変更イベントで、別の検証を指定することもできます。クイック編集ビューに切り替えるには、「クリックしてカスタム検証コードを作成/編集する」の横のボタンをクリックします。その他の入力コンポーネントにも同様の「検証」タブがありますので注意してください。
- 「振る舞い」タブで、ブラウザー上の入力動作を設定することができます。「振る舞い」タブの選択項目は、入力コンポーネントのタイプによって異なりますので注意してください。
- 検証が成功した (「正常終了」) 後、または検証が失敗した (「失敗」) 後に使用するスタイル・シートを設定します。「CSS クラ
スの適用」の隣の「参照」ボタンをクリックして、スタイル・シートを検索します。例えば、検証が成功した場合はテキストを黒で表示し、失敗した場合は赤で表示します。「アクションの実行」フィールドで、検証が成功した場合のアクション、および検証が失敗した場合のアクションを選択することができます。選択項目は同じで、「フィールドを使用不可にする」、「フィールドを使用可能にする」、および「フィールドの選択」です。
- 「クイック編集」ボタンをクリックすることにより、「クイック編集」ビューで、onsuccess イベントと onerror イベントで追加のアクションを設定することができます。
- ページに「実行」ボタンを追加します。
- Faces JSP ページを保管し、それをサーバー上で実行します。
値を何も指定せずにページを実行して、検証をテストします。作成した検証が実行され、作成したすべてのエラー・メッセージが表示されるはずです。
例: クイック編集ビューを使用してカスタムの検証を実行します。
Web ページのフィールドにユーザーが入力した値に対してカスタム検証を実行する例を以下に示します。この例では、ユーザーがユーザー登録フォームに入力し、
「実行」ボタンをクリックします。登録フォームが実行される前に、パスワード・フィールドとパスワードの確認フィールドの両方に、同じパスワードが入力されていることを確認する検証を作成します。また、パスワード・フィールドが少なくとも 6 文字長であることを検証します。カスタム検証を作成するには以下のステップを実行します。
- 登録フォーム (名前、住所などのフィールドを持つ) を含む Faces JSP ファイルと「実行」ボタン (commandExButton) を作成します。
- 2 つの「非表示の入力 (inputSecret)」コンポーネントを Faces JSP ファイルへドラッグします。最初のコンポーネントは「パスワード」フィールドで、2 番目のコンポーネントは「パスワードの確認」フィールドです。
- 最初の「非表示の入力」コンポーネントのプロパティー・ビューを開きます。妥当性検査パネルでは、「値を必須にする」をチェックします。
- 「最小長」に 6 文字を設定します。
- 「実行」ボタンをクリックします。
- 「実行」ボタンのクイック編集ビューに切り替えます ()
- クイック編集ビューの右ペインに以下のコードを追加します。
String text1Val = (String)getSecret1().getValue();
String text2Val = (String)getSecret2().getValue();
System.out.println("text2Val = " + text1Val + " text2Val = " + text2Val);
if(!text1Val.equals(text2Val)){
System.out.println("NOT THE SAME");
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Passwords need to be the same", "Values should be the same");
getMessages1().setErrorStyle("color:Red");
getFacesContext().addMessage(null, message);
return "errorCondition";
}
return "successCondition";
FacesMessage は次のコンストラクターを持っています。FacesMessage()
FacesMessage(FacesMessage.Severity, String summary, String detail)
FacesMessage(String summary)
FacesMessage(String summary, String detail)
- Faces JSP ファイルを保管し、サーバー上で実行します。