ここでは、データ型変換機能の概要として、以下の項目を説明します。
データ型変換機能の構成要素
図3.7 データ型変換機能の構成要素
データ型変換機能
JavaScriptとJavaのデータ型変換を行います。変換には、引数用(上り)と戻り値用(下り)があります。
各種コンバータ
1つのJavaScriptオブジェクト/プリミティブを、1つのJavaのオブジェクト/プリミティブに変換するコンポーネントです。Ajaxフレームワークでは、多数のコンバータが用意されており、コンバータごとに変換の方式が異なります。コンバータの詳細は、「3.6.2 コンバータ一覧」を参照してください。
Java型情報
用意されている各種コンバータから、1つのコンバータを選ぶ際に利用されます。Java型情報の詳細は、「3.6.3 コンバータ選択のロジック」を参照してください。
コンバータ定義ファイル
コンバータ定義ファイルの記述内容によって、コンバータをカスタマイズすることができます。コンバータ定義ファイルの詳細は、「A.6 コンバータ設定の定義(conversion)」を参照してください。
注意
データ型変換機能では、JavaScriptとJavaの間の自然なマッピングの範囲のデータ型変換に限定しています。より複雑な変換は、アプリケーションのJavaScript側またはJava側で行ってください。
データ型変換の例
データ型変換の範囲
以下に、データ型変換機能がサポートするデータ型変換の範囲を説明します。
変換対象となるJavaScriptとJavaのオブジェクト(プリミティブ値を含む)は、一対一に変換されます。
変換対象オブジェクトの参照関係の同一性は保存されません。すなわち、あるオブジェクトが複数のオブジェクトから参照されている場合、変換後は、オブジェクトはその参照ごとに生成されます。詳細は、「図3.9 オブジェクトの複数回参照の例」を参照してください。
オブジェクトのツリー構造の階層は、上限が20です。それを超える場合はエラーとなります。循環参照がある場合も同一のエラーとなります。
図3.9 オブジェクトの複数回参照の例
データ型変換機能では、上記の変換の範囲で、以下のようなカスタマイズが可能です。
コンバータの選択は、基本的に、Java側の型情報に基づいて行われます。また、ユーザー(開発者)がカスタマイズすることもできます。
デフォルトの設定により、ユーザー(開発者)は明示的にコンバータを選ばなくても、データ型変換機能を利用できます。
コンバータの選択方法や、コンバータの細かい動作は、定義ファイルに記述することにより変更できます。
データ型変換の例外
データ型変換機能が通知する例外については、「J.3.6 データ型変換機能に関するメッセージ」を参照してください。