クラス DelegatingNavigationHandlerProxy

java.lang.ObjectSE
jakarta.faces.application.NavigationHandler
org.springframework.web.jsf.DelegatingNavigationHandlerProxy

public class DelegatingNavigationHandlerProxy extends jakarta.faces.application.NavigationHandler
Spring ルート WebApplicationContext から取得した NavigationHandler Bean に委譲する JSF NavigationHandler 実装。

faces-config.xml ファイルでこのハンドラープロキシを次のように構成します。

<application>
  ...
  <navigation-handler>
           org.springframework.web.jsf.DelegatingNavigationHandlerProxy
  </navigation-handler>
  ...
</application>
デフォルトでは、Spring ApplicationContext は、Bean 名 "jsfNavigationHandler" で NavigationHandler を検索します。最も単純なケースでは、これは次のような単純な Spring Bean 定義です。ただし、Spring の Bean 構成機能のすべて、特に依存性注入のすべてのフレーバーをこのような Bean に適用できます。
<bean name="jsfNavigationHandler" class="mypackage.MyNavigationHandler">
  <property name="myProperty" ref="myOtherBean"/>
</bean>
ターゲット NavigationHandler Bean は通常、標準の JSF NavigationHandler クラスを継承します。ただし、このようなシナリオでは、元の NavigationHandler(JSF プロバイダーのデフォルトハンドラー)の装飾はサポートされていないことに注意してください。これは、元のハンドラーを標準の JSF スタイルで(つまり、コンストラクター引数として)挿入できないためです。

元の NavigationHandler を装飾するには、ターゲット Bean が Spring の DecoratingNavigationHandler クラスを継承していることを確認してください。これにより、このプロキシが自動的に検出するメソッド引数として元のハンドラーを渡すことができます。DecoratingNavigationHandler サブクラスは引き続き標準の JSF NavigationHandler としても機能することに注意してください。

このプロキシは、ナビゲーションハンドラーの検索に使用される Bean 名の変更、ターゲットハンドラーの取得に使用される戦略の変更、または ApplicationContext へのアクセスに使用される戦略の変更(通常は FacesContextUtils.getWebApplicationContext(FacesContext) を介して取得)にサブクラス化できます。

導入:
1.2.7
作成者:
Juergen Hoeller, Colin Sampaleanu
関連事項:
  • フィールド概要

    フィールド
    修飾子と型
    フィールド
    説明
    static final StringSE
    Spring アプリケーションコンテキスト内のターゲット Bean のデフォルト名: "jsfNavigationHandler"。
  • コンストラクター概要

    コンストラクター
    コンストラクター
    説明
    新しい DelegatingNavigationHandlerProxy を作成します。
    DelegatingNavigationHandlerProxy(jakarta.faces.application.NavigationHandler originalNavigationHandler)
    新しい DelegatingNavigationHandlerProxy を作成します。
  • 方法の概要

    修飾子と型
    メソッド
    説明
    protected BeanFactory
    getBeanFactory(jakarta.faces.context.FacesContext facesContext)
    Bean 名前解決を委譲する Spring BeanFactory を取得します。
    protected jakarta.faces.application.NavigationHandler
    getDelegate(jakarta.faces.context.FacesContext facesContext)
    委譲先のターゲット NavigationHandler を返します。
    protected StringSE
    getTargetBeanName(jakarta.faces.context.FacesContext facesContext)
    BeanFactory 内のターゲット NavigationHandler Bean の名前を返します。
    getWebApplicationContext(jakarta.faces.context.FacesContext facesContext)
    Bean 名前解決を委譲する Web アプリケーションコンテキストを取得します。
    void
    handleNavigation(jakarta.faces.context.FacesContext facesContext, StringSE fromAction, StringSE outcome)
    Spring アプリケーションコンテキストでターゲット Bean に委譲することにより、指定されたパラメーターによって暗示されるナビゲーションリクエストを処理します。

    クラス jakarta.faces.application.NavigationHandler から継承されたメソッド

    handleNavigation

    クラス ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • DEFAULT_TARGET_BEAN_NAME

      public static final StringSE DEFAULT_TARGET_BEAN_NAME
      Spring アプリケーションコンテキスト内のターゲット Bean のデフォルト名: "jsfNavigationHandler"。
      関連事項:
  • コンストラクターの詳細

    • DelegatingNavigationHandlerProxy

      public DelegatingNavigationHandlerProxy()
      新しい DelegatingNavigationHandlerProxy を作成します。
    • DelegatingNavigationHandlerProxy

      public DelegatingNavigationHandlerProxy(jakarta.faces.application.NavigationHandler originalNavigationHandler)
      新しい DelegatingNavigationHandlerProxy を作成します。
      パラメーター:
      originalNavigationHandler - オリジナルの NavigationHandler
  • 方法の詳細

    • handleNavigation

      public void handleNavigation(jakarta.faces.context.FacesContext facesContext, StringSE fromAction, StringSE outcome)
      Spring アプリケーションコンテキストでターゲット Bean に委譲することにより、指定されたパラメーターによって暗示されるナビゲーションリクエストを処理します。

      ターゲット Bean は、JSF NavigationHandler クラスを継承する必要があります。Spring の DecoratingNavigationHandler を継承する場合、引数として元の NavigationHandler を使用したオーバーロードされた handleNavigation メソッドが使用されます。それ以外の場合は、標準の handleNavigation メソッドが呼び出されます。

      次で指定:
      クラス jakarta.faces.application.NavigationHandlerhandleNavigation 
    • getDelegate

      protected jakarta.faces.application.NavigationHandler getDelegate(jakarta.faces.context.FacesContext facesContext)
      委譲先のターゲット NavigationHandler を返します。

      デフォルトでは、すべての呼び出しに対して、Spring ルート WebApplicationContext から "jsfNavigationHandler" という名前の Bean が取得されます。

      パラメーター:
      facesContext - 現在の JSF コンテキスト
      戻り値:
      委譲先のターゲット NavigationHandler
      関連事項:
    • getTargetBeanName

      protected StringSE getTargetBeanName(jakarta.faces.context.FacesContext facesContext)
      BeanFactory 内のターゲット NavigationHandler Bean の名前を返します。デフォルトは "jsfNavigationHandler" です。
      パラメーター:
      facesContext - 現在の JSF コンテキスト
      戻り値:
      ターゲット Bean の名前
    • getBeanFactory

      protected BeanFactory getBeanFactory(jakarta.faces.context.FacesContext facesContext)
      Bean 名前解決を委譲する Spring BeanFactory を取得します。

      デフォルトの実装は getWebApplicationContext に委譲します。オーバーライドして、解決する任意の BeanFactory 参照を提供できます。通常、これは完全な Spring ApplicationContext になります。

      パラメーター:
      facesContext - 現在の JSF コンテキスト
      戻り値:
      Spring BeanFactory (決して null ではない)
      関連事項:
    • getWebApplicationContext

      protected WebApplicationContext getWebApplicationContext(jakarta.faces.context.FacesContext facesContext)
      Bean 名前解決を委譲する Web アプリケーションコンテキストを取得します。

      デフォルトの実装は FacesContextUtils に委譲します。

      パラメーター:
      facesContext - 現在の JSF コンテキスト
      戻り値:
      Spring Web アプリケーションコンテキスト (決して null ではない)
      関連事項: