spring-framework / org.springframework.web.jsf / DelegatingNavigationHandlerProxy

DelegatingNavigationHandlerProxy

open class DelegatingNavigationHandlerProxy : NavigationHandler

JSF NavigationHandler implementation that delegates to a NavigationHandler bean obtained from the Spring root WebApplicationContext.

Configure this handler proxy in your faces-config.xml file as follows:

 <application> ... <navigation-handler> org.springframework.web.jsf.DelegatingNavigationHandlerProxy </navigation-handler> ... </application>
By default, the Spring ApplicationContext will be searched for the NavigationHandler under the bean name "jsfNavigationHandler". In the simplest case, this is a plain Spring bean definition like the following. However, all of Spring's bean configuration power can be applied to such a bean, in particular all flavors of dependency injection.
 <bean name="jsfNavigationHandler" class="mypackage.MyNavigationHandler"> <property name="myProperty" ref="myOtherBean"/> </bean>
The target NavigationHandler bean will typically extend the standard JSF NavigationHandler class. However, note that decorating the original NavigationHandler (the JSF provider's default handler) is not supported in such a scenario, since we can't inject the original handler in standard JSF style (that is, as constructor argument).

For decorating the original NavigationHandler, make sure that your target bean extends Spring's DecoratingNavigationHandler class. This allows to pass in the original handler as method argument, which this proxy automatically detects. Note that a DecoratingNavigationHandler subclass will still work as standard JSF NavigationHandler as well!

This proxy may be subclassed to change the bean name used to search for the navigation handler, change the strategy used to obtain the target handler, or change the strategy used to access the ApplicationContext (normally obtained via FacesContextUtils#getWebApplicationContext(FacesContext)).

Author
Juergen Hoeller

Author
Colin Sampaleanu

Since
1.2.7

See Also
DecoratingNavigationHandler

Constructors

<init>

DelegatingNavigationHandlerProxy()
DelegatingNavigationHandlerProxy(originalNavigationHandler: NavigationHandler)

Create a new DelegatingNavigationHandlerProxy.

Properties

DEFAULT_TARGET_BEAN_NAME

static val DEFAULT_TARGET_BEAN_NAME: String

Default name of the target bean in the Spring application context: "jsfNavigationHandler"

Functions

handleNavigation

open fun handleNavigation(facesContext: FacesContext, fromAction: String, outcome: String): Unit

Handle the navigation request implied by the specified parameters, through delegating to the target bean in the Spring application context.

The target bean needs to extend the JSF NavigationHandler class. If it extends Spring's DecoratingNavigationHandler, the overloaded handleNavigation method with the original NavigationHandler as argument will be used. Else, the standard handleNavigation method will be called.