Ajaxフレームワーク ユーザーズガイド
目次 索引 前ページ次ページ

第2章 クライアントフレームワーク> 2.4 ユーザデータ/ユーザロジックの定義部

2.4.5 入力データの検証

入力データの検証では、モデルオブジェクトに格納されたデータや画面部品から入力されたデータに誤りがないかを検証します。

入力データを検証するには、以下の2つの方法があります。

以下の図に、入力データの検証方法の概要を示します。

[図: 入力データの検証方法の概要]

モデルオブジェクトの検

モデルを定義するモデル定義部品に、そのモデルのデータのスキーマを定義することにより、モデルオブジェクトを検証することができます。

以下の図に、モデルオブジェクトの検証例を示します。

[図: モデルオブジェクトの検証例]

モデル定義部品の定義には、rcf:objectでオブジェクトを指定し、そのオブジェクトを検証するスキーマをrcf:schemaで指定します。スキーマ定義は、JavaScriptの連想配列で記述し、要素名には検証対象のプロパティのパスを、値には検証内容を指定します。
上記の例では、name1の検証内容として、データ型(string)、最小文字数、最大文字数、および独自の検証関数を指定しています。

モデルデータの検証を実行するには、JavaScriptで以下のようにモデル定義部品のAPIを実行します。

var result = model1.validate();

検証結果(result)は、成功した場合はnullが返されます。エラーがあった場合は、検証エラー情報を含んだ連想配列が返されます。
例えば、name1の検証内容に指定した“最大文字数”および“独自の検証関数”に対して検証エラーがあった場合、以下のような連想配列が返されます。

{
 "name1": [
   {最大文字数に対する検証エラー情報},
   {独自の検証関数に対する検証エラー情報} ],

 "address1": [
    {...}, {...}
 ]
}

連想配列の要素名には、検証でエラーとなったプロパティのパス名が含まれます。値には、エラーとなった項目の情報が配列で含まれます。詳細は、“UI部品リファレンス”を参照してください。

また、検証を実行した場合、検証したモデルのプロパティが画面部品にバインディングしていて、かつ、画面部品にValidationHelperが付加されている場合、ValidationHelperの検証結果イベント(validationerrorまたはvalidationsuccess)が発生します。

以下の図に、その仕組みを示します。

[図: 検証結果イベントの送出]

各部品の入力データの検

TextInputなどの画面部品でイベントをトリガとし、データの検証を行う場合は、画面部品に機能付加部品であるValidationHelperを付加します。これにより、画面部品のプロパティのうち、モデルとバインディングしているプロパティの値を検証することができます。

以下の図に、部品の入力データの検証例を示します。

[図: 部品の入力データの検証例]

ValidationHelperでは、targetプロパティで対象とする画面部品、eventsプロパティで検証を行うトリガとなるイベントを指定します。

上記の例のように、ValidationHelperを設定した場合、フォーカスを失ったときに、TextInputのvalueプロパティとバインディングしているモデルの値(実体はobject1のname1プロパティ)が検証されます。検証は、モデルに指定したデータのスキーマ定義に基づいて実行されます。そのため、モデルにスキーマ定義が指定されている必要があります。

ValidationHelperでは、検証の結果により、以下のイベントリスナが呼ばれます。

ユーザは、これらのイベントに対する処理を記述することによって、検証結果に対する動作を規定することができます。上記の例では、onValidationErrorイベントリスナで“入力値に誤りがあります”というアラートを表示させています。


目次 索引 前ページ次ページ

Copyright 2009 FUJITSU LIMITED