メニューのレンダリングでは、PanelPage
コンポーネントを使用するかわりに、Page
コンポーネントの柔軟なレンダリング機能を利用して、Page
コンポーネントをメニュー・モデルに値バインドできます。これによって、メニュー・コンポーネントのルック・アンド・フィールを簡単に変更でき、Page
コンポーネントに対して新規のレンダラを作成するだけで済みます。panelPage
コンポーネントを使用する場合は、メニュー・コンポーネントごとにレンダラを変更する必要があります。
たとえば、次のメニューのmenu2
ファセットとmenu3
ファセット(青のメニュー・バーと左側のナビゲーション・リスト)のコードを考えてみます。
この内容を手動で入力すると、次のようになります。
<f:facet name="menu2">
<af:menuBar>
<af:commandMenuItem text="Insurance" action="go.insurance"/>
<af:commandMenuItem text="Paid Time Off" action="go.pto"/>
</af:menuBar>
</f:facet>
<f:facet name="menu3">
<af:menuList>
<af:commandMenuItem text="Health" action="go.health"/>
<af:commandMenuItem text="Dental" action="go.dental"/>
</af:menuList>
</f:facet>
PanelPage
を使用してコンポーネントをメニュー・モデルにバインドする場合のコードは、次のようになります。
<f:facet name="menu2">
<af:menuBar var="node" value="#{menuModel.model}">
<f:facet name="nodeStamp">
<af:commandMenuItem text="#{node.label}"
action="#{node.getOutcome}"/>
</f:facet>
</af:menuBar>
</f:facet>
<f:facet name="menu3">
<af:menuList var="node" value="#{menuModel.model}">
<f:facet name="nodeStamp">
<af:commandMenuItem text="#{node.label}"
action="#{node.getOutcome}"/>
</f:facet>
</af:menuList>
</f:facet>
Page
コンポーネントをバインドできるため、前述のコードのかわりに次のコードを使用できます。
<af:page title="Title 1" var="node" value="#{menuModel.model}">
<f:facet name="nodeStamp">
<af:commandMenuItem text="#{node.label}"
action="#{node.getOutcome}"type="#{node.type}"/>
</f:facet>
</af:page>
メニュー・コンポーネントごとにJSFページにコードを記述する必要はありません。
メニュー・モデルを使用してコンポーネントをバインドするメニュー階層を作成する手順は、次のとおりです。
<navigation-rule>
...
<navigation-case>
<from-outcome>go.insurance</from-outcome>
<to-view-id>pages/insurance.jsp</to-view-id>
</navigation-case>
...
</navigation-rule>
Page
タグのtitle
プロパティの変更のみです。
メニュー階層について
メニュー・モデルについて
ADF Facesメニューのファセットおよびコンポーネントについて
ADF Facesコンポーネントの使用
Copyright © 1997, 2007, Oracle. All rights reserved.