Ajaxフレームワーク UI部品リファレンス |
目次
索引
![]() ![]() |
第3章 機能部品 | > 3.1 モデル定義 |
Modelは、データモデルを定義する機能部品であり、ユーザアプリケーションのデータと画面部品のプロパティをバインディングするために使用します。
<div rcf:type="Model" rcf:object="modelData" ... ></div> |
または
<span rcf:type="Model" rcf:object="modelData" ... ></span> |
子要素を指定することはできません。
本部品は画面に表示されないため、<div>タグおよび<span>タグのどちらで記述しても違いはありません。
表の項目の意味は、“表の項目の意味”を参照してください。
名前 |
データ型 |
説明 |
省略 |
省略値 |
属性指定 |
更新 |
部分更新 |
---|---|---|---|---|---|---|---|
object |
Object |
データとするオブジェクトを表す値です。 |
不可 |
null |
値 |
不可 |
可 |
schema |
Object |
データのスキーマを表す値です。 |
可 |
null |
値 |
不可 |
不可 |
部品共通のプロパティも指定できます。詳細は、“画面部品共通プロパティ”を参照してください。
固有のイベントリスナはありません。部品共通のイベントリスナは、“画面部品共通イベントリスナ”を参照してください。
■getPropertyメソッド
メソッド |
getProperty(name) |
|
引数 |
name |
プロパティ名 |
戻り値 |
プロパティ値(任意の型) |
|
例外 |
引数が省略された場合、または空文字列が指定された場合、エラーになります。(RCF11006) |
|
説明 |
objectプロパティに設定したオブジェクトのプロパティのコピーを取得します。 |
■setPropertyメソッド
メソッド |
setProperty(name,value) |
|
引数 |
name |
プロパティ名 |
value |
プロパティ値 |
|
戻り値 |
なし |
|
例外 |
以下の場合にエラーとなります。
|
|
説明 |
objectプロパティに設定したオブジェクトのプロパティ値を設定します。 |
■getDataProviderメソッド
メソッド |
getDataProvider(name) |
|
引数 |
name |
プロパティ名 |
戻り値 |
データプロバイダ |
|
例外 |
以下の場合にエラーとなります。
|
|
説明 |
objectプロパティに設定したオブジェクトのプロパティを操作するデータプロバイダを取得します。 |
■validateメソッド
メソッド |
validate(continue) |
|
引数 |
continue |
あるプロパティの検証でエラーが発生した場合、それ以降のプロパティの検証を続行するかどうかを指定します。 |
戻り値 |
検証結果(Object) |
|
例外 |
以下の場合に例外が発生します。
|
|
説明 |
モデルデータの検証を実行します。実行するには、objectプロパティおよびschemaプロパティが指定されている必要があります。 |
validateメソッドの戻り値
検証に失敗した場合、戻り値には、検証エラーに関する情報が含まれます。
{ "プロパティパス": [ {検証エラー情報}, {検証エラー情報}, ... ], "プロパティパス": ... ... "validateAll": 検証エラー情報 } |
名前 |
データ型 |
説明 |
---|---|---|
プロパティパス |
Array |
プロパティパスは、検証でエラーとなったプロパティへのパスであり、配列には、検証エラーとなった項目の情報(検証エラー情報)が含まれます。 |
validateAll |
Object |
validateAllの検証に失敗した場合、検証エラー情報が設定されます。 |
{ number: エラーコード message: メッセージ error: 例外オブジェクト } |
プロパティ名 |
データ型 |
説明 |
---|---|---|
number |
Number |
エラーコード(注) |
message |
String |
メッセージ |
error |
Object |
エラーを表すオブジェクト |
注) エラーコードを以下に示します。
検証エラー情報のnumberプロパティに設定されるエラーコードは、以下のとおりです。
コード |
内容 |
---|---|
100 |
typeの検証に失敗しました。 |
110 |
notNullの検証に失敗しました。 |
200 |
Booleanの制約であるvalueの検証に失敗しました。 |
300 |
Stringの制約であるlengthの検証に失敗しました。 |
301 |
Stringの制約であるminLengthの検証に失敗しました。 |
302 |
Stringの制約であるmaxLengthの検証に失敗しました。 |
303 |
Stringの制約であるpatternの検証に失敗しました。 |
400 |
Numberの制約であるfiniteの検証に失敗しました。 |
401 |
Numberの制約であるintegerの検証に失敗しました。 |
402 |
Numberの制約であるmaxInclusiveの検証に失敗しました。 |
403 |
Numberの制約であるmaxExclusiveの検証に失敗しました。 |
404 |
Numberの制約であるminInclusiveの検証に失敗しました。 |
405 |
Numberの制約であるminExclusiveの検証に失敗しました。 |
406 |
Numberの制約であるintegerDigitsの検証に失敗しました。 |
407 |
Numberの制約であるfractionDigitsの検証に失敗しました。 |
408 |
Numberの制約であるpatternの検証に失敗しました。 |
600 |
Arrayの制約であるlengthの検証に失敗しました。 |
601 |
Arrayの制約であるminLengthの検証に失敗しました。 |
602 |
Arrayの制約であるmaxLengthの検証に失敗しました。 |
603 |
Arrayの制約であるelementTypeの検証に失敗しました。 |
604 |
Arrayの制約であるelementNotNullの検証に失敗しました。 |
900 |
validateによる検証に失敗しました。 |
910 |
validateAllによる検証に失敗しました。 |
■validatePropertyメソッド
メソッド |
validateProperty(path) |
|
引数 |
path |
検証を行うプロパティパス |
戻り値 |
検証エラー結果(Array) |
|
例外 |
以下の場合に例外が発生します。
|
|
説明 |
プロパティの検証を実行します。 |
部品共通のJavaScript APIは、“画面部品共通JavaScript API”を参照してください。
ここでは、モデルオブジェクトに対する検証内容であるスキーマの記述方法について説明します。
■スキーマ全体の記述方法
スキーマは、JavaScriptのオブジェクトとして記述します。
{ "プロパティパス":{ 検証内容 } "プロパティパス":{ 検証内容 } ... validateAll: function(object) { // 全体の関連性検証関数 } } |
プロパティ名 |
データ型 |
説明 |
省略 |
---|---|---|---|
Object |
プロパティパスには、検証したいプロパティ名とその検証内容を指定します。 |
可 |
|
Function |
オブジェクト全体の関連性チェックを行う関数を定義します。引数には、objectプロパティで指定したオブジェクトが渡されます。 |
可 |
[例] var o = { a: { b: "xxxx", c: { d: "xxxx" } }, f: "xxxx" } [パス名] a ⇒ "a" b ⇒ "a.b" d ⇒ "a.c.d" |
以下に、スキーマの記述例を示します。
<script type="text/javascript"> //<![CDATA[ var modelData = { obj1: { string1: "文字列" } } var schema = { "obj1.string1":{ type: "string", notNull: true }, validateAll: function(object) { ... } } //]]> </script> ... <div rcf:id="model1" rcf:type="Model" rcf:object="modelData" rcf:schema="schema"></div> |
上記の例では、モデルのデータとして定義されているmodelDataのobj1.string1に対して、スキーマを記述しています。
プロパティパスは、“"obj1.string1"”のように""(ダブルクォーテーション)で囲む必要があります。
また、スキーマ定義では、“validateAll”という名前は予約されており、モデルのデータのオブジェクトに“validateAll”という名前があったとしても、それに対するスキーマを定義することはできません。
validateAllでは、検証に成功した場合はtrue、検証に失敗した場合はfalseまたはエラーを送出します。
以下に例を示します。
{ validateAll: function(object) { if (object.a > object.b) { return true; } throw "The value of a is invalid."; } } |
上記の例では、オブジェクトにあるaとbの比較によるチェックを行っています。aの方が大きい場合は検証が成功したことを示すtrueを、それ以外の場合は検証が失敗したことを表すエラーを返します。
エラー情報は、検証エラー情報のerrorプロパティから取得できます。検証エラー情報については、“JavaScript API”を参照してください。
なお、validateAllの検証結果は、どの画面部品のValidationHelper対しても、検証結果イベントは送出されません。
■プロパティの検証内容
各プロパティの検証内容の記述方法を以下に示します。
{ type: "データ型", notNull: Nullを許可しない場合はtrueを設定 constraint: 各データ型に依存した制約条件 validate: function(value, object) { // 独自の検証内容 } |
名前 |
データ型 |
説明 |
省略 |
---|---|---|---|
type |
String |
プロパティのデータ型を指定します。データ型としては、以下が指定できます。
プロパティの値がnullの場合、typeの検証は常に成功します。 |
不可 |
notNull |
Boolean |
nullを許可するかしないかを指定します。
|
可 |
constraint |
Object |
各データ型に依存した制約条件を指定します。 |
可 |
Function |
プロパティに対する独自の検証関数を指定します。 |
可 |
validateでは、検証に成功した場合はtrue、検証に失敗した場合はfalseまたはエラーを送出します。
例を以下に示します。
{ validate: function(value, object) { if (value > object.a) { return true; } throw "invalid value. "; } } |
上記の例では、オブジェクトにあるaとプロパティの値の比較によるチェックを行っています。プロパティの値bの方が大きい場合は検証が成功したことを示すtrueを、それ以外の場合は検証が失敗したことを表すエラーオブジェクトを返します。
エラーオブジェクトは、検証エラー情報のerrorプロパティから取得できます。
{ value: 値の状態(Boolean) } |
プロパティ名 |
データ型 |
説明 |
省略 |
---|---|---|---|
value |
Boolean |
値の状態を指定します。 |
可 |
{ length: 文字数 minLength: 最小文字数 maxLength: 最大文字数 pattern: 正規表現形式 } |
プロパティ名 |
データ型 |
説明 |
省略 |
---|---|---|---|
length |
Number |
文字数を指定します。 |
可 |
minLength |
Number |
最小文字数を指定します。 |
可 |
maxLength |
Number |
最大文字数を指定します。 |
可 |
pattern |
RegExp |
正規表現を指定します。 |
可 |
{ finite: 有限数であるかどうか integer: 整数であるかどうか maxInclusive: 値の範囲の最大値(指定値を含む) maxExclusive: 値の範囲の最大値(指定値を含まない) minInclusive: 値の範囲の最小値(指定値を含む) minExclusive: 値の範囲の最小値(指定値を含まない) integerDigits: 整数部の最大桁数 fractionDigits: 小数部の最大桁数 pattern: 正規表現形式 } |
プロパティ名 |
データ型 |
説明 |
省略 |
---|---|---|---|
finite |
Boolean |
有限数であるかどうかを指定します。
|
可 |
integer |
Boolean |
整数かどうかを指定します。有限数でない場合は、検証に失敗します。
|
可 |
maxInclusive |
Number |
値の範囲の最大値を指定します。(指定値を含む) |
可 |
maxExclusive |
Number |
値の範囲の最大値を指定します。(指定値を含まない) |
可 |
minInclusive |
Number |
値の範囲の最小値を指定します。(指定値を含む) |
可 |
minExclusive |
Number |
値の範囲の最小値を指定します。(指定値を含まない) |
可 |
integerDigits |
Number |
10進数での整数部の最大桁数を指定します。 |
可 |
fractionDigits |
Number |
10進数での小数部の最大桁数を指定します。 |
可 |
pattern |
RegExp |
正規表現形式を指定します。 |
可 |
{ length: 配列の要素の数 minLength: 配列の最小数 maxLength: 配列の最大数 itemType: 配列の要素のデータ型 itemNotNull: Nullを禁止するかどうか } |
プロパティ名 |
データ型 |
説明 |
省略 |
---|---|---|---|
length |
Number |
配列の要素の数を指定します。 |
可 |
minLength |
Number |
配列の要素の最小数を指定します。 |
可 |
maxLength |
Number |
配列の要素の最大数を指定します。 |
可 |
itemType |
String |
配列の要素のデータ型を指定します。データ型としては、以下が指定できます。
どれか1つでもデータ型が異なっていれば、検証に失敗します。 |
可 |
itemNotNull |
Boolean |
配列の要素にNullを許可するかどうかを指定します。
|
可 |
■スキーマ記述例
以下にスキーマの記述例を示します。
このスキーマでは、モデルのデータであるobject1.str1、object1.num1に対する制約を記述しています。
<script type="text/javascript"> //<![CDATA[ var modelData = { object1: { str1: 'abc111', num1: 10.5 } } var schema = { "object1.str1": { type: 'string', notNull: true, constraint: { minLength: 3, maxLength: 7} }, "object1.num1": { type: 'number', notNull: true, minExclude: 0, maxExclude: 20, fractionDigits: 2 } } //]]> </script> ... <div rcf:id="model1" rcf:type="Model" rcf:object="modelData" rcf:schema="schema"></div> |
目次
索引
![]() ![]() |