記述形式
<div rcf:type="Model" rcf:object="modelData" ... ></div>
または
<span rcf:type="Model" rcf:object="modelData" ... ></span>
注意
子要素を指定することはできません。詳細は、「5.1.4 子要素を持たない部品に子要素を記述した場合の動作」を参照してください。
本部品は画面に表示されないため、<div>タグおよび<span>タグのどちらで記述しても違いはありません。
プロパティ
表の項目の意味は、「Text」の「プロパティ」を参照してください。
名前 | データ型 | 説明 | 省略 | 省略値 | 属性指定 | 更新 | 部分更新 |
---|---|---|---|---|---|---|---|
object | Object | データとするオブジェクトを表す値です。 | 不可 | null | 値 | 不可 | 可 |
schema | Object | データのスキーマを表す値です。 | 可 | null | 値 | 不可 | 不可 |
部品共通のプロパティも指定できます。詳細は、「2.8.1 画面部品共通プロパティ」を参照してください。
イベントリスナ
固有のイベントリスナはありません。部品共通のイベントリスナは、「2.8.2 画面部品共通イベントリスナ」を参照してください。
JavaScript API
メソッド | getProperty(name) | |
引数 | name | プロパティ名 |
戻り値 | [任意] | プロパティ値 |
例外 | 引数が省略された場合、または空文字列が指定された場合、エラーになります。(RCF11006) | |
説明 | objectプロパティに設定したオブジェクトのプロパティのコピーを取得します。 |
メソッド | setProperty(name,value) | |
引数 | name | プロパティ名 |
value | プロパティ値 | |
戻り値 | なし | |
例外 | 以下の場合にエラーとなります。
| |
説明 | objectプロパティに設定したオブジェクトのプロパティ値を設定します。 |
メソッド | getDataProvider(name) | |
引数 | name | プロパティ名 |
戻り値 | [任意] | データプロバイダ |
例外 | 以下の場合にエラーとなります。
| |
説明 | objectプロパティに設定したオブジェクトのプロパティを操作するデータプロバイダを取得します。 |
メソッド | validate(continue) | |
引数 | continue | あるプロパティの検証でエラーが発生した場合、それ以降のプロパティの検証を続行するかどうかを指定します。 |
戻り値 | [Object] | 検証結果 |
例外 | 以下の場合に例外が発生します。
| |
説明 | モデルデータの検証を実行します。実行するには、objectプロパティおよびschemaプロパティが指定されている必要があります。 |
validateメソッドの戻り値
検証に失敗した場合、戻り値には、検証エラーに関する情報が含まれます。
{ "プロパティパス": [ {検証エラー情報}, {検証エラー情報}, ... ], "プロパティパス": ... ... "validateAll": 検証エラー情報 }
名前 | データ型 | 説明 |
---|---|---|
プロパティパス | Array | プロパティパスは、検証でエラーとなったプロパティへのパスであり、配列には、検証エラーとなった項目の情報(検証エラー情報)が含まれます。 |
validateAll | Object | validateAllの検証に失敗した場合、検証エラー情報が設定されます。 |
検証エラー情報
検証エラー情報は、以下のプロパティを持つオブジェクトである。
検証エラー情報(errorResult)
{ number: エラーコード message: メッセージ error: 例外オブジェクト }
プロパティ名 | データ型 | 説明 |
---|---|---|
number | Number | エラーコード(注) |
message | String | メッセージ |
error | Object | エラーを表すオブジェクト |
注) エラーコードを以下に示します。
コード | 内容 |
---|---|
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による検証に失敗しました。 |
上記の表は、検証エラー情報のnumberプロパティに設定されるエラーコードです。
メソッド | validateProperty(path) | |
引数 | path | 検証を行うプロパティパス |
戻り値 | [Array] | 検証エラー結果 |
例外 | 以下の場合に例外が発生します。
| |
説明 | プロパティの検証を実行します。 |
部品共通のJavaScript APIもあります。部品共通のJavaScript APIは、「2.8.3 画面部品共通JavaScript API」を参照してください。
スキーマ定義
ここでは、モデルオブジェクトに対する検証内容であるスキーマの記述方法について説明します。
スキーマは、JavaScriptのオブジェクトとして記述します。
{ "プロパティパス":{ 検証内容 } "プロパティパス":{ 検証内容 } ... validateAll: function(object) { // 全体の関連性検証関数 } }
プロパティ名 | データ型 | 説明 | 省略 |
---|---|---|---|
Object | プロパティパスには、検証したいプロパティ名とその検証内容を指定します。 | 可 | |
Function | オブジェクト全体の関連性チェックを行う関数を定義します。引数には、objectプロパティで指定したオブジェクトが渡されます。 | 可 |
プロパティパスには、Modelの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には、オブジェクト全体の関連性チェックを行う関数を指定できます。この関数の引数には、objectプロパティで指定されたオブジェクトが渡されます。
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は、プロパティに対する独自の検証関数を指定します。この関数では、第1引数にプロパティの値、第2引数にobjectプロパティに指定されたオブジェクトが渡されます。
validateでは、検証に成功した場合はtrue、検証に失敗した場合はfalseまたはエラーを送出します。
例を以下に示します。
{ validate: function(value, object) { if (value > object.a) { return true; } throw "invalid value. "; } }
上記の例では、オブジェクトにあるaとプロパティの値の比較によるチェックを行っています。プロパティの値の方が大きい場合は検証が成功したことを示すtrueを、それ以外の場合は検証が失敗したことを表すエラーオブジェクトを返します。
エラーオブジェクトは、検証エラー情報のerrorプロパティから取得できます。
制約条件を以下に示します。
{ value: 値の状態(Boolean) }
プロパティ名 | データ型 | 説明 | 省略 |
---|---|---|---|
value | Boolean | 値の状態を指定します。 | 可 |
制約条件を以下に示します。「5.1.2 サロゲートペア」も参考にしてください。
{ 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 | 正規表現形式を指定します。 | 可 |
Dateの制約条件はありません。
制約条件を以下に示します。
{ 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>