メニュー階層を手動で作成するかわりにMenuModel
クラスを使用して、メニューを動的に作成するためのメニュー・モデルを作成できます。
メニュー・モデルを作成する手順は、次のとおりです。
label
、viewId
およびoutcome
が必要です。子要素があるページでは、その子要素のリストを表すためのプロパティが必要です。
none
であることが必要です。<managed-bean>
<managed-bean-name>insurance</managed-bean-name>
<managed-bean-class>mypackage.MenuItem</managed-bean-class> //this is the class created in step 1
<managed-bean-scope>none</managed-bean-scope>
<managed-property>
<property-name>children</property-name>
<list-entries>
<value-class>mypackage.MenuItem</value-class> //this is the class created in step 1
<value>#{health}</value>
<value>#{dental}</value>
</list-entries>
</managed-property>
<managed-property>
<property-name>label</property-name>
<value>Insurance</value>
</managed-property>
<managed-property>
<property-name>viewId</property-name>
<value>pages/insurance.jsp</value>
</managed-property>
<managed-property>
<property-name>outcome</property-name>
<value>go.insurance</value>
</managed-property>
</managed-bean>
ChildPropertyTreeModel
インスタンスを作成するクラスを作成し、そのクラスを参照するためのマネージドBeanを構成します(ChildPropertyTreeModel
の詳細は、ADF FacesのJavadocを参照)。このBeanは、ステップ1で作成したBeanの子プロパティと同じchildProperty
の値を使用してインスタンス化してください(前述の例ではchildren
となります)。さらに、listInstance
プロパティの値としてルート・ページのリストを使用して、インスタンス化してください。このマネージドBean構成は、次のようになります。<managed-bean>
<managed-bean-name>menuTreeModel</managed-bean-name>
<managed-bean-class>mypackage.TreeModelAdapter</managed-bean-class>
<managed-bean-scope>none</managed-bean-scope>
<managed-property>
<property-name>childProperty</property-name>
<value>children</value>
</managed-property>
<managed-property>
<property-name>listInstance</property-name>
<list-entries>
<value-class>mypackage.MenuItem</value-class>
<value>#{help}</value>
<value>#{switch}</value>
<value>#{benefits}</value>
<value>#{emp}</value>
</list-entries>
</managed-property>
</managed-bean>
ViewIdPropertyMenuModel
インスタンスを作成するクラスを作成します。このインスタンスは、getModel()
メソッドをコールすることで取得できます(ViewIdPropertyMenuModel
の詳細は、ADF FacesのJavadocを参照)。このクラスを参照するためのマネージドBeanを構成します。これが、すべてのメニュー・コンポーネントのバインド先のBeanとなります。このBeanをインスタンス化し、ステップ3で構成したBeanのmodel
プロパティに設定されているinstance
プロパティの値と、viewIdProperty
の値(ステップ1で作成したBeanのviewId
プロパティと同じ値)を指定してください。<managed-bean>
<managed-bean-name>menuModel</managed-bean-name>
<managed-bean-class>mypackage.MenuModelAdapter</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>viewIdProperty</property-name>
<value>viewId</value>
</managed-property>
<managed-property>
<property-name>instance</property-name>
<value>#{menuTreeModel.model}</value>
</managed-property>
</managed-bean>
メニューの詳細な例は、「ADF Faces開発者ガイド」を参照してください。
これで、個々のコンポーネントをメニュー・モデルに値バインディングしたり、ページ・コンポーネントをバインドすることができます。
メニュー階層について
マネージドBeanを使用したデータへのJSFコンポーネントのバインディング
値バインディングについて
データ表内のファセットの使用
ADF Facesコンポーネントの使用
Copyright © 1997, 2006, Oracle. All rights reserved.