<componentRef> 要素は <componentRefList> 要素の子であり、当該コンポーネントによって参照されるコンポーネントを指定します。
componentRefs は、暗黙に PUBLIC アクセスモードとなります。
<componentRef> 要素の「modifier」属性は、コンポーネント参照の優先指定要件を指定します。
ABSTRACT の場合、コンポーネント参照の <component> 要素は省略されます。このため、この要素は非抽象派生コンポーネントによって指定する必要があります。 コンポーネント参照を抽象と宣言できるのは、コンポーネントも抽象と宣言されている場合だけです。 非抽象コンポーネント参照は、<component> 要素を宣言する必要があります。
FINAL の場合、コンポーネント参照は派生コンポーネントによって無効にできません。
指定しない場合、派生コンポーネントはコンポーネント参照を無効にするかどうかを選択できます。
<componentRef> 要素の「installMode」属性は、参照先コンポーネントをインストールして対象化する方法を指定します。 参照先コンポーネントが TOPLEVEL としてインストールされている場合、1 つのプランで直接インストールされたかのように、ほかの任意のコンポーネントがそのコンポーネントを使用できます。 しかし、参照先コンポーネントが NESTED としてインストールされている場合、そのインストールの範囲は参照元コンポーネントのインストール範囲に暗黙に限定され、そのサービスも参照元コンポーネントでしか利用できません。
論理的に、入れ子になった参照先コンポーネントは参照元コンポーネントが要求する細かな機能単位を定義しますが、ほかのコンポーネントに役立つことはありません。 一方、最上位の参照先コンポーネントは参照元コンポーネントが使用するサービスを定義しますが、ほかのコンポーネントもこのサービスを使用することもできます。
入れ子になった参照先コンポーネントの有効期間は、参照元コンポーネントの有効期間と暗黙に同じになります。 入れ子になった参照先コンポーネントのインストールは参照元コンポーネントのインストールの最中にしか行えず、参照元コンポーネントがアンインストールされる際に暗黙にアンインストールされます。 これに対し、最上位の参照先コンポーネントの有効期間が参照元コンポーネントの有効期間と同じになることはありません。 最上位の参照先コンポーネントは、参照元コンポーネントのインストール時に参照元コンポーネントによってインストールすることも、あるいはほかの方法であらかじめインストールしておくか、あとからインストールすることもできます。 参照元コンポーネントがアンインストールされる場合、明示的に参照元コンポーネントによってアンインストールされないかぎり最上位の参照先コンポーネントはインストールされたままとなります。 また、ほかのコンポーネントも参照先コンポーネントをアンインストールできます。
名前 |
数 |
説明 |
---|---|---|
type |
0 または 1 |
当該参照先コンポーネントがインスタンスとなるべき型を指定する。 これは、包含する <componentRefList> によって指定される型のインスタンスでなければならない。 指定しないと、包含する <componentRefList> によって指定された型が使用される |
argList |
0 または 1 |
参照先コンポーネントのインストール時にそれらのコンポーネント変数設定として使用される値の一覧。 |
component |
1 1 |
参照先コンポーネント |
1 抽象 componentRefs には含めることができません。
デフォルトでは、派生コンポーネントはそのベースコンポーネントのすべてのコンポーネント参照を継承します。
ベースコンポーネントの <componentRefList> 要素が最終でない場合、派生コンポーネントはベースコンポーネントから継承されたコンポーネント参照に使用されていない名前を使用して、別のコンポーネント参照を定義できます。
派生コンポーネントは、同じ名前を使用してコンポーネント参照を宣言し直すことにより、非最終継承コンポーネント参照のコンポーネント参照を無効にできます。 コンポーネント参照が無効にされた場合には、コンポーネント参照の全コンテンツを宣言し直す必要があります。 優先する installMode は、本来の参照のものと同じでなければなりません。 優先する <type> 要素は、本来の型のインスタンスでなければなりません。 優先する <argList> 要素は、本来のものと結合されます (詳細は以下)。 <component> 要素は、優先する参照が非抽象の場合にかぎって指定されます。
コンポーネント参照を無効にすると、ベースコンポーネント内のものも含め、そのコンポーネント参照の使用はすべて無効にされた値に評価されます。
派生コンポーネントを非抽象と宣言する場合、ベースコンポーネントによって宣言された抽象的なコンポーネント参照は派生コンポーネントによって無効にする必要があります。