UIComponentクラス: oracle.adf.view.rich.component.rich.fragment.RichDynamicDeclarativeComponent
コンポーネント・タイプ: oracle.adf.RichDynamicDeclarativeComponent
ネーミング・コンテナ: 該当。このコンポーネントの子(partialTriggers、findComponent()
など)を参照するときには、子のIDの先頭に、このコンポーネントのIDとコロン(:)を付ける必要があります。
特定のタグを必要とせずに、動的な宣言コンポーネントを定義します。動的な宣言コンポーネントを使用すると、コンポーネントのUI定義が他のコンポーネントの構成によって定義され、単一のコンポーネントとして処理されることが可能になります。
JSPタグ属性または<f:attribute>
属性を使用して属性を渡すことができます。<f:facet>
タグを使用して、ファセットを標準として設定することもできます。定義では、var EL変数を使用してコンポーネントの属性を参照し、<af:componentDef>
タグに設定されるcomponentVar EL変数を使用してコンポーネント自体を参照できます。定義で<af:facetRef>
タグを使用すると、ファセットを参照できます。各ファセットを参照できるのは1度のみです。
宣言コンポーネントの子としてコンポーネントを配置した場合に、ファセット内部への配置に失敗し、また(facetRefを介した)コンポーネント定義ファイルのファセットの参照に失敗した場合、そのコンポーネントはレンダリングされません。
動的な宣言コンポーネントによって、フラット化された子がサポートされます。これは、宣言コンポーネントの子が宣言コンポーネントの親によって参照できるようになることを意味します。たとえば、宣言コンポーネントのルート・レベルでの入力コンポーネントは、宣言コンポーネントがpanelFormLayoutコンポーネント内に格納されている場合、正確にレンダリングされます。
動的な宣言コンポーネントでは、部分的なトリガーさらには部分的なターゲットであることがサポートされます。コンポーネントの子によってイベントがブロードキャストされると、コンポーネントによって部分更新がトリガーされます。たとえば、宣言コンポーネントの子である入力テキスト・コンポーネント内での値変更のイベントによって、宣言コンポーネント上でリスニングするコンポーネントがトリガーされます。#{attrs.partialTriggers}(varをattrsと想定)を使用すると、アクションによって宣言コンポーネントがトリガーされる場合に子コンポーネントが部分的に更新されることがあります。他のコンポーネントとの唯一の違いは、宣言コンポーネント自体が再レンダリングされないことです。したがって、部分更新中に宣言コンポーネントのviewIdを変更できるようにするには、宣言コンポーネントの親が更新される必要があります。
ストレッチ・レイアウトとフロー・レイアウトおよびスクロール・レイアウトについての注意点:
今日のWebブラウザで、スクロール・バーを持つ領域内に垂直方向にストレッチされたコンテンツを配置するのは確実な方法ではありません。ページ構造の外側の領域をストレッチする場合は、コンポーネント・ツリーのアセンブル方法に注意する必要があります。
経験則:
これらのいずれかの規則に違反すると、ページ構造がページ構造ガイドラインに従わないものとなり、各種Webブラウザおよびコンピューティング・プラットフォーム間で一貫性のあるアプリケーションのレンダリングを行うことができなくなる可能性があります。
例:
<af:declarativeComponent id="weather" viewid="pagefragments_weatherBox_jsff" zip="94065" description="Redwood Shores, CA"> <f:facet name="forecastSummary"> <af:outputText value="Partly Cloudy"/> </f:facet> <f:facet name="forecastDetail"> <af:panelGroupLayout layout="vertical"> <af:outputText value="72'F"/> <af:outputText value="Partly Cloudy"/> <af:outputText value="Wind: W at 16 mph"/> <af:outputText value="Humidity: 46%"/> </af:panelGroupLayout> </f:facet> </af:declarativeComponent>
対応するpagefragments/weatherBox.jsffを次に示します。
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" version="2.1"> <af:componentDef var="attrs"> <af:xmlContent> <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component"> <description> This component will show weather forecasts in a box. </description> <facet> <facet-name>forecastSummary</facet-name> <description>This child draws out the summary forecast</description> </facet> <facet> <facet-name>forecastDetail</facet-name> <description>This child draws out the detailed forecast</description> </facet> <attribute> <attribute-name>zip</attribute-name> <description>The Zip code of the area</description> <required>true</required> </attribute> <attribute> <attribute-name>description</attribute-name> <default-value>Unknown</default-value> <description>The city/state of the zip code </description> </attribute> </component> </af:xmlContent> <af:panelHeader text="Weather Forecast for Zip:#{attrs.zip}, #{attrs.description}" partialTriggers="#{attrs.partialTriggers}"> <af:facetRef facetname="forecastSummary"/> <af:showDetail> <af:facetRef facetname="forecastDetail"/> </af:showDetail> </af:panelHeader> </af:componentDef> </jsp:root>
型 | フェーズ | 説明 |
---|---|---|
org.apache.myfaces.trinidad.event.AttributeChangeEvent | アプリケーションの起動、 リクエスト値の適用 |
属性変更を記述するために配信されるイベント。属性変更イベントは、プロパティに対するプログラム的な変更については配信されません。アプリケーションの特定のリクエストなしにレンダラによってプロパティが変更される場合にのみ配信されます。属性変更イベントの例には、クライアント側のサイズ変更をサポートしていた列の幅などがあります。 |
名前 | 型 | ELのサポート | 説明 |
---|---|---|---|
attributeChangeListener | javax.el.MethodExpression | ELのみ | 属性変更リスナーへのメソッド・リファレンス。属性変更イベントは、プロパティに対するプログラム的な変更については配信されません。アプリケーションの特定のリクエストなしにレンダラによってプロパティが変更される場合にのみ配信されます。属性変更イベントの例には、クライアント側のサイズ変更をサポートしていた列の幅などがあります。 |
binding | oracle.adf.view.rich.component.<wbr/>rich.fragment.RichDynamicDeclarativeComponent | ELのみ | コンポーネント・インスタンスをBean上に格納するELリファレンス。これは、バッキングBeanからコンポーネントへのプログラム的なアクセスを提供するため、またはコンポーネントの作成をバッキングBeanに移動するために使用できます。 |
customizationId | String | あり | この属性は推奨されていません。永続的なカスタマイズを適用するには、id属性を使用する必要があります。この属性は、次のリリースでは削除されます。 |
id | String | あり | コンポーネントの識別子。識別子は、HTMLで許可される構文のサブセットに準拠している必要があります。 |
partialTriggers | String[] | あり | 部分更新をトリガーするコンポーネントのID。このコンポーネントは、トリガー・コンポーネント上でリスニングします。トリガー・コンポーネントの1つがなんらかの更新を発生させるイベントを受信した場合、このコンポーネントも更新されることをリクエストします。識別子はソース・コンポーネント(このコンポーネント)に対して相対的であり、NamingContainerで構成されている必要があります。コンポーネントがすでにネーミング・コンテナ内にある場合、単一のコロンを使用するとページのルートから検索を開始でき、複数のコロンを使用するとNamingContainerを上方向に移動できます。たとえば、::を前に置くと、コンポーネントのネーミング・コンテナ(または、コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体)から出てそこから検索を開始します。:::を前に置くと、2つのネーミング・コンテナ(コンポーネントがネーミング・コンテナである場合にはそのコンポーネント自体も含まれます)から出てそこから検索を開始します。 |
rendered | boolean | あり | コンポーネントがレンダリングされるかどうか。falseに設定した場合、このコンポーネントについて出力は配信されません(コンポーネントはどのような方法でもレンダリングされず、クライアントで表示できません)。 |
viewId | String | あり | 使用するビューID。この属性はコンポーネントで設定するのではなく、JSPタグを使用して設定する必要があります。 |