バリデーション

クライアント入力データの検証

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属性を指定します。
検証が成功したときに実行する MCO またはマクロ (たとえば、成功のメッセージを表示する) を指定します。
検証が成功しなかったときに実行する 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 要素イベントを指定します。