apex:compositionというのは、Visualforceのテンプレートの一種。
それについて、今日悟った内容をメモ。
テンプレート
``````
まず、
1個、配下にはとだけ。これがテンプレートと認識(他のpageがこれを利用できる)で大丈夫です。
<!-- myFullForm.page -->
<apex:page controller="compositionExample">
<apex:messages/>
myFullForm.page
<apex:composition template="myFormComposition">
</apex:composition>
</apex:page>
これ一行で、myFormComposition.pageの内容がこのページに表示できるようになる。
画面
ページ分離
`````` 2個追加した。 は「とりあえず枠だけ用意して、後は引っ張るpage側が気まぐれで1個、2個実現すれば」
<!--template.page-->
<apex:page controller="compositionExample">
<apex:messages/>
myFullForm.page
<apex:composition template="myFormComposition">
<apex:define name="meal">
<apex:outputLabel value="❷ myMeal: " for="mealField"/>
<apex:inputText id="mealField" value="{!mealField}"/>
</apex:define>
</apex:composition>
</apex:page>
ユーザの権限、ロールによって、表示する項目が違ったりするので、
テンプレートを使って、分離するのがよりベター。
参考:
Visualforce 開発者ガイド (apex:composition を使用したテンプレートの定義)