すべての Faces 入力コンポーネントに、拡張妥当性検査機能を設定できます。
例えば、「日付/時刻の入力」コンポーネントに、
最小値を「2003/01/01」、最大値を「現在」と設定して妥当性検査を設定できます。
ここでは、入力コンポーネントに対するクライアントおよびサーバーの妥当性検査の基本的なステップを示します。
- Faces JSP ファイルを作成する。
- 「入力」コンポーネントを Faces JSP ファイルにドラッグする。
- 「入力」コンポーネントの「プロパティー」ビューで、フォーマット・リストの「ストリング」、「数値」、
「日付/時刻」、または「マスク」を選択する。
- 「プロパティー」ビューの「妥当性検査」タブで、入力の実行依頼時にサーバーの妥当性検査属性を設定できます。
- この「入力」フィールドに値を入力することが必要であれば、
「値を必須にする」をチェックする。
- 最大値と最小値を入力する。
「ストリングの入力」および「マスクの入力」コンポーネントの場合、
使用可能な最小文字数および最大文字数を入力する。
「日付/時刻の入力」コンポーネントの場合、
使用可能な最も古い (最小) 日付/時刻と最新の (最大) 日付/時刻を入力する。
値として「現在 (now)」を入力することもできます。
「数値の入力」コンポーネントの場合、使用可能な最低 (最小) の数値と最高 (最大) の数値を入力する。
- 「エラー・メッセージ・コントロールに検証エラー・メッセージを表示」 にチェックする。
これにより、この「入力」コンポーネントにバインドされて、
妥当性検査が失敗した場合にはエラー・メッセージを表示できる「エラーの表示」コンポーネントを作成する。
「エラーの表示」コンポーネントは、ページ上の「入力」コンポーネントの横に作成されます。
- 「ストリングの入力」コンポーネントがある場合、メニューから 「入力制限」を選択できます。
このほかの選択項目として、「制限なし」、「英字のみ」、「数字のみ」があります。
「制限なし」がデフォルトであり、英数字が使用可能です。
「クイック編集」ビューの「値の変更」イベントで、追加の妥当性検査を提供できます。
「クリックしてカスタム検証コードを作成/編集」の横のボタンをクリックして、
「クイック編集」ビューに切り替える。その他の入力コンポーネントにも同じ「妥当性検査」タブがあります。
- 「動作」タブで、ブラウザーにおける入力動作を設定できます。
「動作」タブ上の選択項目は入力コンポーネントのタイプによって変わります。
- 妥当性検査が成功 (「正常終了」) または失敗 (「妥当性検査失敗)」) した後で、
使用するスタイル・シートを設定する。
「CSS クラスの適用」の横の「参照」ボタンをクリックして、 スタイル・シートを検索する。
例えば、妥当性検査の成功時にはテキストを黒で、妥当性検査の失敗時にはテキストを赤で表示することができます。
「アクションの実行」フィールドで、
妥当性検査成功時のアクションと妥当性検査失敗時のアクションを選択できます。
選択項目は同じで、「フィールドを使用不可にする」、「フィールドを使用可能にする」、
および「フィールドの選択」です。
- 「クイック編集」ボタンをクリックすることにより、
「クイック編集」ビューで、onsuccess イベントと onerror イベントにおける追加のアクションを設定することができます。
- 「実行」ボタンをページに追加する。
- Faces JSP ページを保管して、サーバーでそのページを実行する。
値は何も入れずにページを実行して、妥当性検査をテストします。
作成した妥当性検査が実行され、作成したすべてのエラー・メッセージが表示されるはずです。
例: 「クイック編集」ビューを使用してカスタム妥当性検査を行う
これはユーザーが Web ページでフィールドに入力した値についてカスタム妥当性検査を行う例です。
この例では、ユーザーが登録フォームを埋めて、
「実行」ボタンをクリックします。
登録フォームを実行依頼する前に、
パスワード・フィールドとパスワードの確認フィールドの両方に、
同じパスワードが入力されていることを確認する妥当性検査を作成します。
さらに、パスワード・フィールドが少なくとも 6 文字長であることを妥当性検査します。
以下のステップはカスタム妥当性検査を作成する手順です。
- 登録フォーム (JSP、住所などのフィールドがある) を含む 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 has the following constructors:FacesMessage()
FacesMessage(FacesMessage.Severity, String summary, String detail)
FacesMessage(String summary)
FacesMessage(String summary, String detail)
- Faces JSP ページを保管して、サーバーで実行する。