/
バリデーション
バリデーション
クライアント入力データの検証
Nexaweb 4.5 では、ユーザーがクライアントユーザーインターフェイスのフィールドに入力したデータを検証するロジックを宣言的に作成できます。
この機能は、Nexaweb 4.5 では、バリデータプラグインフレームワークの com.nexaweb.plugin.validation.validators.Validator クラスを通じて提供されます。
バリデータプラグインフレームワークは次のバリデータタグを提供します。また、独自のタグを作成して Validator クラスを拡張することも可能です。
バリデータ | 説明 |
requiredFieldValidator | フィールドにデータが含まれているかどうかを検証します。 |
stringLengthValidator | フィールドに指定した長さのデータが含まれているかどうかを検証します。 |
integerValidator | フィールドに有効な整数が含まれているかどうかを検証します。この検証は、入力されたデータの量に基づいて行われます。 |
decimalValidator | フィールドに 10 進数が含まれているかどうかを検証します。 |
rangeValidator | フィールドに指定した範囲の整数または 10 進数が含まれているかどうかを検証します。この検証は、入力されたデータの実際の値に基づいて行われます。 |
dateValidator | フィールドに指定したフォーマットの日付が含まれているかどうかを検証します。 |
currencyValidator | フィールドに 10 進数と指定したプレフィックス (通貨型用) が含まれているかどうかを検証します。 |
用意されているバリデータに加えて、次のものを作成することもできます。
バリデータ要素 | 説明 |
バリデータ チェーン | UI ファイルの同じフィールドまたは異なるフィールドで実行する一連のバリデータを定義します。 |
バリデータ参照 | バリデータ宣言全体を指定せずに、既存のバリデータを参照できるようにします。バリデータ チェーン内のバリデータを参照するには、バリデータ参照を使用します。 |
バリデータの使用
ここでは、クライアント アプリケーションの UI でバリデータを使用する方法の概要を示します。
バリデータの使用に必要となる主な手順は、次のとおりです。
- バリデータを宣言する
- 検証する要素を定義する
- 実行する onSuccess MCO を作成および指定する
- 実行する onFailure MCO を作成および指定する
- UI ファイルのイベントでバリデータを呼び出す
手順 | 説明 |
バリデータを宣言する | アプリケーション UI ファイルの rootPane の外部で、各バリデータを宣言します。 UI ファイルの複数のフィールドで同じバリデータ タイプを使用するには、フィールドごとに一意のバリデータを宣言し、各フィールドの OnSuccess イベントおよび OnFailureイベントを通じて一意のメッセージをユーザーに提供します。 |
検証する要素を定義する | UI 内の検証する要素を決定し、その要素をバリデータの value 属性で定義します。 |
実行する onSuccess イベントを作成および指定する | 検証が成功したときに UI で実行するタスク (たとえば、成功のメッセージを表示する) を実行する MCO またはマクロを作成します。 |
実行する onFailure イベントを作成および指定する | 検証が失敗したときに UI で実行するタスク (たとえば、失敗のメッセージを表示する) を実行する MCO またはマクロを作成します。 |
UI ファイルのイベントでバリデータを呼び出す | UI ファイルの rootPane で、検証するフィールドのイベントで宣言済みのバリデータを呼び出すコマンドを指定します。 たとえば、onTextChange=“validator://balanceValidator.execute()” と指定します。 |
バリデータの宣言
バリデータは、UI ファイルの rootPane の外部で、次の基本構造を使用して宣言します。
<validator:stringLengthValidator xmlns=“http://nexaweb.com/validator” id=“passwordValidator” value=“password.text” onSuccess=“mco://myMco.validPassword()” onFailure=“mco://myMco.invalidPassword()” />
バリデータ タグ要素 | 説明 |
id=“passwordValidator” | 特定のバリデータ タイプの特定のインスタンスに一意の ID を指定します。 |
value=“password.text” | UI ファイルの textField または passwordField の ID と、そのフィールドの検証対象の text属性を指定します。 |
onSuccess=“mco://myMco.validPassword()” | 検証が成功したときに実行する MCO またはマクロ (たとえば、成功のメッセージを表示する) を指定します。 |
onFailure=“mco://myMco.invalidPassword()” | 検証が成功しなかったときに実行する MCO またはマクロ (たとえば、失敗のメッセージを表示する) を指定します。 |
検証する要素の定義
バリデータは UI でユーザー入力を検証する手段を提供するものなので、主に textField 要素または passwrodField 要素で呼び出します。
検証する要素を定義するには、検証する要素の次の属性を指定する必要があります。
textField 属性 | 説明 |
id=" " | 特定の textField 要素に一意の ID を指定します。 |
text=" " | Nexaweb クライアントで、ユーザーが入力したテキストを読み込むための属性を指定します。 |
例:
<textField id=“startDate” text=“” />
これらの textField 要素属性を指定することに加えて、バリデータを呼び出す textField イベントを textField 要素タグで指定することもできます。このドキュメントの「バリデータの呼び出し」を参照してください。
要素の定義を完成させるには、呼び出すバリデータの定義の value 属性で、この textField を指定する必要があります。このドキュメントの「バリデータの宣言」を参照してください。
実行する onSuccess イベントおよび onFailure イベントの作成と指定
要素の検証が成功または失敗したことを伝えるメッセージや何らかのフィードバックをユーザーに表示する場合に、実行する必要のある主な手順は次のとおりです。
- このイベントを処理する MCO またはマクロを作成する
- バリデータを含む UI ファイルで MCO またはマクロを宣言する
- バリデータの onSuccess 属性または onFailure属性 (あるいはその両方) から MCO またはマクロを呼び出す
例:
<mco:declarations xmlns:mco="http://nexaweb.com/mco"> <mco:mco id="loginMco" src="mcos.LoginMco" </mco:declarations> <nxml xmlns:validator="http://nexaweb.com/validator"> <validator:requiredFieldValidator id="usernameValidator" value="username.text" onSuccess="" onFailure="macro://failureMacro.execute('Username required')" /> <validator:requiredFieldValidator id="passwordValidator" value="password.text" onSuccess="mco://loginMco.enableLogInButton()" onFailure="macro://failureMacro.execute('Password required')" /> </nxml> <dialog id="loginDialog" title="Login" modal="true" closable="false"> <flowLayout /> <label text="Username:" /> <textField id="username" text="" focused="true" onTextChange="validator://usernameValidator.execute()" /> <label text="Password:" /> <passwordField id="password" text="" onTextChange="validator://passwordValidator.execute()" /> <button text="Log In" enabled="false" onCommand="mco://loginMco.login()" /> </dialog>
UI ファイルのイベントでのバリデータの呼び出し
バリデータを呼び出すには、要素イベント ハンドラの値として次のコマンドを指定します。
usernameValidator には、呼び出す定義済みバリデータタグの名前を指定します。
バリデータは、textField 要素または passwordField 要素の任意の有効なイベント ハンドラで呼び出すことができます。
例:
<dialog> <textField id="username" text="" /> <passwordField id="password" text="" /> <button text="Login" onCommand="validator://loginValidator.execute()"/> </dialog>
まとめ
次の例では、UI ファイルでバリデータを使用する方法を注釈付きで示します。
<!-- 1 --> <mco:declarations xmlns:mco="http://nexaweb.com/mco"> <mco:mco id="loginMco" src="mcos.LoginMco"> </mco:declarations> <!-- 2 --> <nxml xmlns:validator="http://nexaweb.com/validator"> <validator:requiredFieldValidator <!-- 3--> id="usernameValidator" <!-- 4--> value="username.text" onSuccess="" <!-- 5 --> onFailure="macro://failureMacro.execute('Username required')"/> validator:requiredFieldValidator id="passwordValidator" value="password.text" onSuccess="mco://loginMco.enableLogInButton()" onFailure="macro://failureMacro.execute('Password required')" /> </nxml> <dialog id="loginDialog" title="Login" modal="true" closable="false"> <flowLayout /> <label text="Username:" /> <textField <!-- 6-->id="username" text="" focused="true" <!-- 7 --> onTextChange="validator://usernameValidator.execute()" /> <label text="Password:" /> <passwordField id="password" text="" onTextChange="validator://passwordValidator.execute()" /> <button text="Log In" enabled="false" onCommand="mco://loginMco.login()" /> </dialog>
手順 | 説明 |
1 | ログインの検証に成功したときにユーザーにメッセージを表示するバリデータの onSuccessイベントを処理する MCO を宣言します。 |
2 | UI ファイルでバリデータを宣言します。この例では、2 つの必須フィールド バリデータを宣言します。1 つは username という ID の textField 用、もう 1 つは password という ID のpasswordField 用です。 |
3 | 検証する UI 要素の一意の ID を指定します。 |
4 | valueバリデータ属性は、検証する要素の ID属性と text 属性を指定します。 |
5 | このバリデータで実行する onFailureイベントを指定します。この onFailureイベントは、loginMcoという MCO によって定義されます。 |
6 | 検証する UI 要素の一意の ID を指定します。 |
7 | バリデータを呼び出す UI 要素イベントを指定します。 |