ページの先頭行へ戻る
Interstage Interaction Manager V10.1.2 AjaxフレームワークUI部品リファレンス
FUJITSU Software

3.1.1 Model

Modelは、データモデルを定義する機能部品であり、ユーザーアプリケーションのデータと画面部品のプロパティをバインディングするために使用します。

述形式

<div rcf:type="Model" rcf:object="modelData" ... ></div>

または

<span rcf:type="Model" rcf:object="modelData" ... ></span>

注意

ロパティ

表の項目の意味は、「Text」の「プロパティ」を参照してください。

名前

データ型

説明

省略

省略値

属性指定

更新

部分更新

object

Object

データとするオブジェクトを表す値です。
objectプロパティには、Array以外の任意のObjectを指定できます。

不可

null

不可

schema

Object

データのスキーマを表す値です。
データの各プロパティに対する検証内容が定義されています。
詳細は、「スキーマ定義」を参照してください。

null

不可

不可

部品共通のプロパティも指定できます。詳細は、「2.8.1 画面部品共通プロパティ」を参照してください。

ベントリスナ

固有のイベントリスナはありません。部品共通のイベントリスナは、「2.8.2 画面部品共通イベントリスナ」を参照してください。

JavaScript API

■getPropertyメソッド

メソッド

getProperty(name)

引数

name
[String]

プロパティ名

戻り値

[任意]

プロパティ値

例外

引数が省略された場合、または空文字列が指定された場合、エラーになります。(RCF11006)

説明

objectプロパティに設定したオブジェクトのプロパティのコピーを取得します。
プロパティ名には、「a.b.c」のようなプロパティパスも指定することができます。
このメソッドで、Modelのobjectプロパティの値やschemaプロパティの値を取得することはできません。

■setPropertyメソッド

メソッド

setProperty(name,value)

引数

name
[String]

プロパティ名

value
[任意]

プロパティ値

戻り値

なし

例外

以下の場合にエラーとなります。

  • 引数が省略された場合(RCF11006)

  • nameプロパティに空文字列が指定された場合(RCF11006)

  • nameプロパティに存在していないプロパティ名を指定した場合(RCF11008)

説明

objectプロパティに設定したオブジェクトのプロパティ値を設定します。
プロパティ名には、「a.b.c」のようなプロパティパスも指定することができます。なお、プロパティパスには「[]」は記述できません。配列やオブジェクトを部分更新する場合には、データプロバイダを利用してください。データプロバイダを利用すると、配列の要素の追加や削除、オブジェクトのプロパティの追加が可能になります。
このメソッドで、Modelのobjectプロパティの値やschemaプロパティの値を設定することはできません。

■getDataProviderメソッド

メソッド

getDataProvider(name)

引数

name
[String]

プロパティ名

戻り値

[任意]
(データプロバイダの種類による)

データプロバイダ

例外

以下の場合にエラーとなります。

  • 引数が省略された場合、または空文字列が指定された場合(RCF11006)

  • nameに存在していないプロパティ名を指定した場合(RCF11008)

説明

objectプロパティに設定したオブジェクトのプロパティを操作するデータプロバイダを取得します。
プロパティ名には、「a.b.c」のようなプロパティパスも指定することができます。

■validateメソッド

メソッド

validate(continue)

引数

continue
[Boolean]

あるプロパティの検証でエラーが発生した場合、それ以降のプロパティの検証を続行するかどうかを指定します。
true:続行します。
false:続行しません。
省略した場合は、trueになります。

戻り値

[Object]

検証結果
検証が成功した場合はnullになります。

例外

以下の場合に例外が発生します。

  • schemaプロパティが設定されていない場合(RCF16101)

  • スキーマ定義の記述に誤りがある場合(RCF16190)

  • スキーマ定義で指定された対象となるプロパティが存在しない場合(RCF16104)

説明

モデルデータの検証を実行します。実行するには、objectプロパティおよびschemaプロパティが指定されている必要があります。
検証を実行した場合、検証したモデルのプロパティが画面部品にバインディングしていて、かつ画面部品にValidationHelperが付加されているとき、ValidationHelperに検証結果イベント(validationerrorまたはvalidationsuccess)が自動的に送出されます。

validateメソッドの戻り値

検証に失敗した場合、戻り値には、検証エラーに関する情報が含まれます。

{
  "プロパティパス": [ {検証エラー情報}, {検証エラー情報}, ... ],
  "プロパティパス": ...
     ...
  "validateAll": 検証エラー情報
}

名前

データ型

説明

プロパティパス

Array

プロパティパスは、検証でエラーとなったプロパティへのパスであり、配列には、検証エラーとなった項目の情報(検証エラー情報)が含まれます。

validateAll

Object

validateAllの検証に失敗した場合、検証エラー情報が設定されます。

■validatePropertyメソッド

メソッド

validateProperty(path)

引数

path
[String]

検証を行うプロパティパス

戻り値

[Array]

検証エラー結果
検証が成功した場合はnullになります。

例外

以下の場合に例外が発生します。

  • 引数pathが不正な場合(RCF16102)

  • schemaプロパティが設定されていない場合(RCF16101)

  • 引数pathで指定されたオブジェクトが存在しない場合(RCF16104)

  • 引数pathで指定されたオブジェクトに対するスキーマが定義されていない場合(RCF16103)

  • スキーマ定義の記述に誤りがある場合(RCF16190)

説明

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

部品共通のJavaScript APIもあります。部品共通のJavaScript APIは、「2.8.3 画面部品共通JavaScript API」を参照してください。

キーマ定義

ここでは、モデルオブジェクトに対する検証内容であるスキーマの記述方法について説明します。

■スキーマ全体の記述方法

スキーマは、JavaScriptのオブジェクトとして記述します。

{
  "プロパティパス":{ 検証内容 }
  "プロパティパス":{ 検証内容 }
  ...
  validateAll: function(object) {
    // 全体の関連性検証関数
  }
}

プロパティ名

データ型

説明

省略

プロパティパス

Object

プロパティパスには、検証したいプロパティ名とその検証内容を指定します。
検証内容については、「■プロパティの検証内容」を参照してください。

validateAll

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

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

プロパティのデータ型を指定します。データ型としては、以下が指定できます。

  • "boolean":Boolean

  • "string" :String

  • "number" :Number

  • "date" :Date

  • "array" :Array

  • "object" :Object(Date、Arrayを含まない)

プロパティの値がnullの場合、typeの検証は常に成功します。
また、プロパティがundefinedの場合、検証は常に失敗します。

不可

notNull

Boolean

nullを許可するかしないかを指定します。

  • true: nullを許可しない
    プロパティ値がundefinedの場合も検証に失敗します。

  • false: nullを許可する
    常に検証が成功します。

constraint

Object

各データ型に依存した制約条件を指定します。
ここで記述できる内容は、typeで指定したデータ型により異なります。
記述内容の詳細については、「Booleanの制約条件」ほかを参照してください。

validate

Function

プロパティに対する独自の検証関数を指定します。

validate

validateは、プロパティに対する独自の検証関数を指定します。この関数では、第1引数にプロパティの値、第2引数にobjectプロパティに指定されたオブジェクトが渡されます。

validateでは、検証に成功した場合はtrue、検証に失敗した場合はfalseまたはエラーを送出します。

例を以下に示します。

{
  validate: function(value, object) {
      if (value > object.a) {
          return true;
      }
      throw "invalid value. ";
  }
}

上記の例では、オブジェクトにあるaとプロパティの値の比較によるチェックを行っています。プロパティの値の方が大きい場合は検証が成功したことを示すtrueを、それ以外の場合は検証が失敗したことを表すエラーオブジェクトを返します。

エラーオブジェクトは、検証エラー情報のerrorプロパティから取得できます。

Booleanの制約条件

制約条件を以下に示します。

{
  value: 値の状態(Boolean)
}

プロパティ名

データ型

説明

省略

value

Boolean

値の状態を指定します。
そのプロパティの値がtrueであるべきならば、trueを指定します。

Stringの制約条件

制約条件を以下に示します。「5.1.2 サロゲートペア」も参考にしてください。

{
  length: 文字数
  minLength: 最小文字数
  maxLength: 最大文字数
  pattern: 正規表現形式
}

プロパティ名

データ型

説明

省略

length

Number

文字数を指定します。

minLength

Number

最小文字数を指定します。
文字数が指定した値以上であれば、検証に成功します。

maxLength

Number

最大文字数を指定します。
文字数が指定した値以下であれば、検証に成功します。

pattern

RegExp

正規表現を指定します。

Numberの制約条件

制約条件を以下に示します。

{
  finite: 有限数であるかどうか
  integer: 整数であるかどうか
  maxInclusive: 値の範囲の最大値(指定値を含む)
  maxExclusive: 値の範囲の最大値(指定値を含まない)
  minInclusive: 値の範囲の最小値(指定値を含む)
  minExclusive: 値の範囲の最小値(指定値を含まない)
  integerDigits: 整数部の最大桁数
  fractionDigits: 小数部の最大桁数
  pattern: 正規表現形式
}

プロパティ名

データ型

説明

省略

finite

Boolean

有限数であるかどうかを指定します。

  • true:有限数の場合
    NaNや無限大は検証に失敗します。

  • false:有限数でない場合

integer

Boolean

整数かどうかを指定します。有限数でない場合は、検証に失敗します。

  • true:整数の場合

  • false:整数でない場合

maxInclusive

Number

値の範囲の最大値を指定します。(指定値を含む)
有限数でない場合は、検証に失敗します。

maxExclusive

Number

値の範囲の最大値を指定します。(指定値を含まない)
有限数でない場合は、検証に失敗します。

minInclusive

Number

値の範囲の最小値を指定します。(指定値を含む)
有限数でない場合は、検証に失敗します。

minExclusive

Number

値の範囲の最小値を指定します。(指定値を含まない)
有限数でない場合は、検証に失敗します。

integerDigits

Number

10進数での整数部の最大桁数を指定します。
有限数でない場合、または指数表記の場合、常に検証に失敗します。

fractionDigits

Number

10進数での小数部の最大桁数を指定します。
有限数でない場合、または指数表記の場合、常に検証に失敗します。

pattern

RegExp

正規表現形式を指定します。
numberオブジェクトを10進数で文字列化し、指定された正規表現形式と一致するかを検証します。
有限数でない場合、または指数表記の場合、常に検証に失敗します。

Dateの制約条件

Dateの制約条件はありません。

Arrayの制約条件

制約条件を以下に示します。

{
  length: 配列の要素の数
  minLength: 配列の最小数
  maxLength: 配列の最大数
  itemType: 配列の要素のデータ型
  itemNotNull: Nullを禁止するかどうか
}

プロパティ名

データ型

説明

省略

length

Number

配列の要素の数を指定します。

minLength

Number

配列の要素の最小数を指定します。
要素数が指定した値以上であれば、検証に成功します。

maxLength

Number

配列の要素の最大数を指定します。
要素数が指定した値以下であれば、検証に成功します。

itemType

String

配列の要素のデータ型を指定します。データ型としては、以下が指定できます。

  • "boolean" :Boolean

  • "string" :String

  • "number" :Number

  • "date" :Date

  • "array" :Array

  • "object" :Object(Date、Arrayを含まない)

どれか1つでもデータ型が異なっていれば、検証に失敗します。
要素がnullの場合、typeの検証は常に成功します。

itemNotNull

Boolean

配列の要素にNullを許可するかどうかを指定します。

  • true: Nullを許可しない

  • false: 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>