詳細アイコン JSFページ・テンプレート

「JSFページ・テンプレートの作成」ウィザードを使用してテンプレートを作成すると、テンプレート定義が格納される.jspxファイルが作成されます。さらに、テンプレート定義を格納するJSPXファイルの名前とパスを保存するpagetemplate-metadata.xmlファイルが作成されます。

<pageTemplateDefs xmlns="http://xmlns.oracle.com/adf/faces/rich/pagetemplate">
  <pagetemplate-jsp-ui-def>
    /myTemplate.jspx
  </pagetemplate-jsp-ui-def>
</pageTemplateDefs> 

テンプレート定義の.jspxファイルには、次の情報が追加されます。

<af:pageTemplateDef var="attrs">
  <af:xmlContent>
    <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
      <display-name>myTemplate</display-name>
      <facet>
        <facet-name>body</facet-name>
      </facet>
    </component>
  </af:xmlContent>
</af:pageTemplateDef 

ページ・テンプレート記述全体は、<af:pageTemplateDef></af:pagetemplateDef>内に定義されます。

ページ・テンプレートには、様々なページでそのテンプレートを使用する方法をページ作成者が設定できるようにする属性とファセットを格納できます。たとえば、コンポーネントのテキスト値をページ作成者が変更できるようにする属性を追加したり、テンプレートに基づいてページを設計する際にページ作成者が独自のページ・コンテンツを追加できるようにするファセットを追加できます。ページ・テンプレートの<af:xmlContent>要素には、そのテンプレートで使用できるすべてのファセットと属性を記述したテンプレート・コンポーネント・メタデータが格納されます。

テンプレート・レイアウトを構成するコンポーネントは、<af:xmlContent></af:xmlContent>の外側に追加する必要があります。

ページ設計時に、ページ作成者は<af:pageTemplate>タグを使用して、JSFページで使用するテンプレートを指定します。

<af:pageTemplate viewId="/myTemplate.jspx"> 

属性

ページ・テンプレート属性は、テンプレートに渡すことができるページ・パラメータと、テンプレート内でそのパラメータを使用してテンプレート・プロパティを設定または変更できる場所を指定します。

ページ作成者がテンプレート・レイアウト内のコンポーネントのプロパティを設定または変更できるようにする場合は、ページ・テンプレートに1つ以上の属性を定義します。たとえば、ページ作成者がパネル・ボックス・コンポーネントについて独自のタイトルを設定できるようにする場合は、pbox-titleという名前とjava.lang.Stringという型を使用して属性を追加します。

<af:pageTemplateDef var="attrs">
  <af:xmlContent>
    <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
    ...
      <attribute>
        <attribute-name>pbox-title</attribute-name>
        <attribute-class>java.lang.String</attribute-class>
        <default-value>Replace title</default-value> 
      </attribute>
    </component>
  </af:xmlContent>
</af:pageTemplateDef 

独自の属性を参照するページ・テンプレートの場合、af:pageTemplateDef要素にはvar属性が必要です。この属性には、テンプレートに定義されている各属性を参照するためのEL変数名が格納されます。JDeveloperでは、af:pageTemplateDefvar属性にはattrsというデフォルト値が使用されます。

<af:pageTemplateDef var="attrs">

テンプレートのレイアウトを設計する際、ページ作成者に対して独自のパネル・ボックス・タイトルの設定を許可する場合は、ページ・テンプレートのvar属性値を使用して適切な属性を参照するEL式を挿入します。たとえば、af:panelBoxtextプロパティのpbox-titleを参照する場合は、次のようなEL式を挿入します。

<af:panelBox text="#{attrs.pbox-title}">  

ページ設計時に、ページ作成者は<f:attribute>要素を使用してパネル・ボックス・タイトルに独自の値を追加します。

<af:pageTemplate ..> 
  <f:attribute name="pbox-title" value="My Title"/> 
  ...
</af:pageTemplate> 

ファセットの定義

ページ・テンプレート・ファセットは、テンプレートを使用してJSFページを作成するときに、ページ作成者がコンテンツを追加できるテンプレートの領域を定義します。ページ作成者が独自のコンテンツを追加できるようにする場合は、今後追加されるコンテンツのプレースホルダとして1つ以上のファセットを定義します。たとえば、テンプレートにパネル・ボックス・コンポーネントがあり、そのパネル・ボックス内の任意の場所にページ作成者が独自のコンテンツを追加できるようにする場合は、pbox-contentsという名前のファセット定義を追加します。

テンプレートのレイアウトを設計する際、ページ作成者に対してパネル・ボックス・コンポーネントへのコンテンツのドロップを許可する場合は、af:facetRefタグをaf:panelBoxコンポーネントに挿入します。その際は、af:facetRefpbox-contentsというファセット名を参照するように指定します。次に例を示します。

<af:panelBox>
  <af:facetRef facetName="pbox-contents"/>
</af:panelBox> 

ページ設計時に、ページ作成者はpbox-contentsファセットを使用して独自のコンテンツを追加します。

<af:pageTemplate ..>
  <f:facet name="pbox-contents"> 
    <!-- add contents here --> 
  </f:facet>
 . . . 
</af:pageTemplate>