動的 Visualforce コンポーネント
Visualforce の基本的な目的は、静的なマークアップベースの言語として、開発者が Salesforce のデザインとマッチしたユーザーインターフェースを作成できるようにすることです。ただし、場合によってはプログラムでページを作成することが必要になります。通常、これは標準マークアップでは難しいか不可能な、複雑なユーザーインターフェース動作を実現する場合です。
動的 Visualforce コンポーネントは、ユーザーの権限やアクション、ユーザーまたは組織の設定、表示されているデータなどのさまざまな状態に応じて、コンポーネントツリーのコンテンツや配置が異なる Visualforce ページを作成する方法を提供します。動的 Visualforce コンポーネントは、標準マークアップを使用する代わりに、Apex で設計されています。
動的 Visualforce コンポーネントは、次のように Apex で定義されています。
たとえば、<apex:dataTable> は Component.Apex.DataTable になります。
1Component.Component_namespace.Component_name
Apex で動的に表現される Visualforce コンポーネントは通常のクラスとして動作します。標準 Visualforce コンポーネントに存在する各属性は、get メソッドや set メソッドによる対応する Apex 表現でプロパティとして利用できます。たとえば、<apex:outputText> コンポーネントの value 属性を次のように操作できるとします。
1Component.Apex.OutputText outText = new Component.Apex.OutputText();
2outText.value = 'Some dynamic output text.';
次のような状況では、動的 Visualforce コンポーネントの使用を検討し���ください。
- 複雑な制御ロジック内で動的 Visualforce コンポーネントを使用し、同等の標準 Visualforce では作成が難しいか不可能なコンポーネントの組み合わせを作ることができます。たとえば、標準 Visualforce コンポーネントでは、通常、コンポーネントの表示は rendered 属性とグローバル IF() 数式関数を使用して制御します。Apex で制御ロジックを記述することで、より自然なメカニズムを使用して動的にコンポーネントを表示することができます。
- 特定の項目を持つオブジェクトを反復処理することがわかっているが、具体的にどのオブジェクトかわからない場合、動的 Visualforce コンポーネントでは、汎用的な sObject 参照を使用してオブジェクトの表示を「プラグイン」できます。詳細は、「関連リストの使用例」を参照してください。