tell me more iconJSFマネージドBean

JSFを使用すると、ユーザー・インタフェース内のコンポーネントを任意のJavaBeanに直接バインドできますが、JSFマネージドBeanを使用する方法が最適です。

マネージドBeanとは、JSF構成ファイル faces-config.xmlに登録されたアプリケーションによって使用される任意のJavaBeansのことです。 ADFデータ・バインディングとADFタスク・フローを使用するアプリケーションでは、マネージドBeanは、構成ファイル adfc-config.xmlまたはタスク・フロー定義ファイルに登録されている必要があります。

アプリケーションが起動すると、アプリケーションは構成ファイル(1つまたは複数)を解析してBeansが使用可能になります。 マネージドBeanが(たとえば、EL式内で値式と呼ばれるコンポーネントのタグ属性の値として)参照されると、マネージドBean作成機能が、そのBeanのデフォルトのコンストラクタ・メソッドを呼び出してBeansをインスタンス化します。 プロパティが宣言されている場合は、それらに宣言済みのデフォルト値が設定されます。

マネージドBeanを定義するには、構成ファイルにエントリを追加します。具体的には、Beanを参照する際に使用するシンボリック名を指定し、Beanをインスタンス化するときに使用するクラスを特定します。 このシンボリック名は、Beanのプロパティとメソッドを参照する必要がある際、Beanを識別するために使用します。 Beanを直接参照する代わりにシンボリック名を使用しているため、プレゼンテーションがアプリケーション・ロジックと分離され、ビューに影響を及ぼすことなくモデルを変更できます。

マネージドBeanは、構成ファイルの <managed-bean>要素を使用して、登録します。 構成ファイルでXMLを手動で編集するか、 adfc-config.xmlまたは faces-config.xmlに対して概要エディタを使用することにより、マネージドBeanを構成ファイルに追加できます。

この例では、Create Managed Beanダイアログを使用して、新しいマネージドBeanを登録および作成します。 Create Managed Beanダイアログには、Beanクラスがない場合にBeanクラスを作成できるオプションがあります。

Create Managed Beanダイアログ

XMLエディタで表示すると、構成ファイルのマネージドBeanの登録は、次のようになります。

                         
<managed-bean>
  <managed-bean-name>myBean</managed-bean-name>
  <managed-bean-class>MyBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
                      

マネージドBeanのスコープによって、Beanが格納されるスコープが決まります。 Beanの有効なスコープは次のとおりです。

  • application:Webアプリケーションが実行されている間、Beanが使用可能です。 このスコープは、LDAPディレクトリなどのグローバルなBeanに有用です。
  • session:クライアント・セッションの間、クライアントがBeanを使用できます。
  • request:インスタンス化されてからクライアントに応答が返されるまで、Beanが使用可能です。 これは通常、現在のページの存続期間です。
  • none:Beanは参照されるたびにインスタンス化されます。 これは、Beanが別のBean内で参照されている場合に有用です。

次のスコープは、ADFアプリケーションのみで使用可能です。

  • backingBean:ページ上の同じ領域または宣言的なコンポーネントには独自のスコープが必要であるため、領域または宣言的なコンポーネントの任意のバッキングBeanにより使用されます。
  • pageFlow:ADFバウンド・タスク・フロー内のアクティビティの間でデータを渡すためのメモリのスコープです。 pageFlowスコープは、ADFバウンド・タスクの各インスタンスの一意のストレージ・エリアを定義します。 そのライフスパンは、 requestスコープよりも長く、 sessionスコープよりも短いADFバウンド・タスク・フローです。
  • view:指定されている場合、Oracle JDeveloperは、ユーザーがページとの対話を継続する限り、使用されるオブジェクトをページに保持します。 ユーザーがページの使用を終了すると、それらのオブジェクトは自動的に解除されます。