Class DelegatingPhaseListenerMulticaster
- java.lang.Object
- org.springframework.web.jsf.DelegatingPhaseListenerMulticaster
- All Implemented Interfaces:
Serializable
,EventListener
,PhaseListener
public class DelegatingPhaseListenerMulticaster extends Object implements PhaseListener
JSF PhaseListener implementation that delegates to one or more Spring-managed PhaseListener beans coming from the Spring root WebApplicationContext.Configure this listener multicaster in your
faces-config.xml
file as follows:<application> ... <phase-listener> org.springframework.web.jsf.DelegatingPhaseListenerMulticaster </phase-listener> ... </application>
The multicaster will delegate allbeforePhase
andafterPhase
events to all target PhaseListener beans. By default, those will simply be obtained by type: All beans in the Spring root WebApplicationContext that implement the PhaseListener interface will be fetched and invoked.Note: This multicaster's
getPhaseId()
method will always returnANY_PHASE
. The phase id exposed by the target listener beans will be ignored; all events will be propagated to all listeners.This multicaster may be subclassed to change the strategy used to obtain the listener beans, or to change the strategy used to access the ApplicationContext (normally obtained via
FacesContextUtils.getWebApplicationContext(FacesContext)
).- Since:
- 1.2.7
- Author:
- Juergen Hoeller, Colin Sampaleanu
- See Also:
- Serialized Form
Constructor Summary
Constructors Constructor Description DelegatingPhaseListenerMulticaster()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPhase(PhaseEvent event)
void
beforePhase(PhaseEvent event)
protected ListableBeanFactory
getBeanFactory(FacesContext facesContext)
Retrieve the Spring BeanFactory to delegate bean name resolution to.protected Collection<PhaseListener>
getDelegates(FacesContext facesContext)
Obtain the delegate PhaseListener beans from the Spring root WebApplicationContext.PhaseId
getPhaseId()
protected WebApplicationContext
getWebApplicationContext(FacesContext facesContext)
Retrieve the web application context to delegate bean name resolution to.
Constructor Detail
DelegatingPhaseListenerMulticaster
public DelegatingPhaseListenerMulticaster()
Method Detail
getPhaseId
public PhaseId getPhaseId()
- Specified by:
getPhaseId
in interfacePhaseListener
beforePhase
public void beforePhase(PhaseEvent event)
- Specified by:
beforePhase
in interfacePhaseListener
afterPhase
public void afterPhase(PhaseEvent event)
- Specified by:
afterPhase
in interfacePhaseListener
getDelegates
protected Collection<PhaseListener> getDelegates(FacesContext facesContext)
Obtain the delegate PhaseListener beans from the Spring root WebApplicationContext.- Parameters:
facesContext
- the current JSF context- Returns:
- a Collection of PhaseListener objects
- See Also:
getBeanFactory(javax.faces.context.FacesContext)
,ListableBeanFactory.getBeansOfType(Class)
getBeanFactory
protected ListableBeanFactory getBeanFactory(FacesContext facesContext)
Retrieve the Spring BeanFactory to delegate bean name resolution to.The default implementation delegates to
getWebApplicationContext
. Can be overridden to provide an arbitrary ListableBeanFactory reference to resolve against; usually, this will be a full Spring ApplicationContext.- Parameters:
facesContext
- the current JSF context- Returns:
- the Spring ListableBeanFactory (never
null
) - See Also:
getWebApplicationContext(javax.faces.context.FacesContext)
getWebApplicationContext
protected WebApplicationContext getWebApplicationContext(FacesContext facesContext)
Retrieve the web application context to delegate bean name resolution to.The default implementation delegates to FacesContextUtils.
- Parameters:
facesContext
- the current JSF context- Returns:
- the Spring web application context (never
null
) - See Also:
FacesContextUtils.getRequiredWebApplicationContext(javax.faces.context.FacesContext)