各メニュー・コンポーネントをPanelPage
コンポーネントのファセットに手動で挿入するかわりに、メニュー・コンポーネントをメニュー・モデルにバインドできます。メニュー・モデルの詳細は、「メニュー・モデルについて」を参照してください。
たとえば、次のメニューのmenu3
ファセット(左側のナビゲーション・リスト)のコードを考えてみます。
この内容を手動で入力すると、次のようになります。
<f:facet name="menu3">
<af:menuList>
<af:commandMenuItem text="Health" action="go.health"/>
<af:commandMenuItem text="Dental" action="go.dental"/>
</af:menuList>
</f:facet>
このかわりに、次のコード・サンプルに示すように、node
を変数として使用し、メニュー・モデルを更新するマネージドBeanにmenuList
コンポーネントをバインドすると、1つのcommandMenuItem
コンポーネント・タグのみでその階層レベルの全メニュー項目を表示できます。この場合、#{node.label}
は値として、#{node.getOutcome}
はアクション・メソッドとして使用します。
<f:facet name="menu3">
<af:menuList startDepth="2" var="node" value="#{menuModel.model}">
<f:facet name="nodeStamp">
<af:commandMenuItem text="#{node.label}"
action="#{node.getOutcome}"/>
</f:facet>
</af:menuList>
</f:facet>
メニュー・モデルを使用してコンポーネントをバインドするメニュー階層を作成する手順は、次のとおりです。
<navigation-rule>
...
<navigation-case>
<from-outcome>go.insurance</from-outcome>
<to-view-id>pages/insurance.jsp</to-view-id>
</navigation-case>
...
</navigation-rule>
rendered
属性を変数のtypeプロパティにバインドしてglobal
に設定します。次に例を示します。rendered="{node.type=='global'}"
rendered
属性を変数のtypeプロパティにバインドしてdefault
に設定します。次に例を示します。rendered="{node.type=='default'}"
startDepth
属性を設定し、表示対象の階層のレベルを決定します。次に例を示します。<af:menuBar startDepth="1" var = "node" value = "#{menuModel.model}">
:
<af:menuBar>
を"1
"に設定します。
<af:menuList>
を"2
"に設定します。
メニュー・モデルでは、階層(つまり、各メニュー・コンポーネントに表示されるリンク)が動的に決定され、フォーカス・パスにある現在のノードが"selected"として設定されるため、実際には、各ページのメニューに同じコードを使用できます。必要なのは、PanelPage
タグのtitle
プロパティの変更のみです。
メニュー階層について
メニュー・モデルについて
Facesメニューのファセットおよびコンポーネントについて
ADF Facesコンポーネントの使用
Copyright © 1997, 2007, Oracle. All rights reserved.