public abstract class DecoratingNavigationHandler extends NavigationHandler
Supports the standard JSF style of decoration (through a constructor argument)
as well as an overloaded handleNavigation
method with explicit
NavigationHandler argument (passing in the original NavigationHandler). Subclasses
are forced to implement this overloaded handleNavigation
method.
Standard JSF invocations will automatically delegate to the overloaded method,
with the constructor-injected NavigationHandler as argument.
handleNavigation(javax.faces.context.FacesContext, String, String, NavigationHandler)
,
DelegatingNavigationHandlerProxy
Modifier | Constructor and Description |
---|---|
protected |
DecoratingNavigationHandler()
Create a DecoratingNavigationHandler without fixed original NavigationHandler.
|
protected |
DecoratingNavigationHandler(NavigationHandler originalNavigationHandler)
Create a DecoratingNavigationHandler with fixed original NavigationHandler.
|
Modifier and Type | Method and Description |
---|---|
protected void |
callNextHandlerInChain(FacesContext facesContext,
java.lang.String fromAction,
java.lang.String outcome,
NavigationHandler originalNavigationHandler)
Method to be called by subclasses when intending to delegate to the next
handler in the NavigationHandler chain.
|
NavigationHandler |
getDecoratedNavigationHandler()
Return the fixed original NavigationHandler decorated by this handler, if any
(that is, if passed in through the constructor).
|
void |
handleNavigation(FacesContext facesContext,
java.lang.String fromAction,
java.lang.String outcome)
This implementation of the standard JSF
handleNavigation method
delegates to the overloaded variant, passing in constructor-injected
NavigationHandler as argument. |
abstract void |
handleNavigation(FacesContext facesContext,
java.lang.String fromAction,
java.lang.String outcome,
NavigationHandler originalNavigationHandler)
Special
handleNavigation variant with explicit NavigationHandler
argument. |
handleNavigation
protected DecoratingNavigationHandler()
protected DecoratingNavigationHandler(NavigationHandler originalNavigationHandler)
originalNavigationHandler
- the original NavigationHandler to decorate@Nullable public final NavigationHandler getDecoratedNavigationHandler()
public final void handleNavigation(FacesContext facesContext, java.lang.String fromAction, java.lang.String outcome)
handleNavigation
method
delegates to the overloaded variant, passing in constructor-injected
NavigationHandler as argument.public abstract void handleNavigation(FacesContext facesContext, @Nullable java.lang.String fromAction, @Nullable java.lang.String outcome, @Nullable NavigationHandler originalNavigationHandler)
handleNavigation
variant with explicit NavigationHandler
argument. Either called directly, by code with an explicit original handler,
or called from the standard handleNavigation
method, as
plain JSF-defined NavigationHandler.
Implementations should invoke callNextHandlerInChain
to
delegate to the next handler in the chain. This will always call the most
appropriate next handler (see callNextHandlerInChain
javadoc).
Alternatively, the decorated NavigationHandler or the passed-in original
NavigationHandler can also be called directly; however, this is not as
flexible in terms of reacting to potential positions in the chain.
facesContext
- the current JSF contextfromAction
- the action binding expression that was evaluated to retrieve the
specified outcome, or null
if the outcome was acquired by some other meansoutcome
- the logical outcome returned by a previous invoked application action
(which may be null
)originalNavigationHandler
- the original NavigationHandler,
or null
if nonecallNextHandlerInChain(javax.faces.context.FacesContext, java.lang.String, java.lang.String, javax.faces.application.NavigationHandler)
protected final void callNextHandlerInChain(FacesContext facesContext, @Nullable java.lang.String fromAction, @Nullable java.lang.String outcome, @Nullable NavigationHandler originalNavigationHandler)
Will call the decorated NavigationHandler specified as constructor argument, if any. In case of a DecoratingNavigationHandler as target, the original NavigationHandler as passed into this method will be passed on to the next element in the chain: This ensures propagation of the original handler that the last element in the handler chain might delegate back to. In case of a standard NavigationHandler as target, the original handler will simply not get passed on; no delegating back to the original is possible further down the chain in that scenario.
If no decorated NavigationHandler specified as constructor argument, this instance is the last element in the chain. Hence, this method will call the original NavigationHandler as passed into this method. If no original NavigationHandler has been passed in (for example if this instance is the last element in a chain with standard NavigationHandlers as earlier elements), this method corresponds to a no-op.
facesContext
- the current JSF contextfromAction
- the action binding expression that was evaluated to retrieve the
specified outcome, or null
if the outcome was acquired by some other meansoutcome
- the logical outcome returned by a previous invoked application action
(which may be null
)originalNavigationHandler
- the original NavigationHandler,
or null
if none