|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.faces.el.VariableResolver org.springframework.web.jsf.DelegatingVariableResolver
public class DelegatingVariableResolver
JSF 1.1 VariableResolver
that first delegates to the
original resolver of the underlying JSF implementation (for resolving
managed-bean objects as defined in faces-config.xml
as well as well-known implicit EL attributes), then to the Spring
root WebApplicationContext
(for resolving Spring beans).
Configure this resolver in your faces-config.xml
file as follows:
<application> ... <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver> </application>All your JSF expressions can then implicitly refer to the names of Spring-managed service layer beans, for example in property values of JSF-managed beans:
<managed-bean> <managed-bean-name>myJsfManagedBean</managed-bean-name> <managed-bean-class>example.MyJsfManagedBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>mySpringManagedBusinessObject</property-name> <value>#{mySpringManagedBusinessObject}</value> </managed-property> </managed-bean>with "mySpringManagedBusinessObject" defined as Spring bean in applicationContext.xml:
<bean id="mySpringManagedBusinessObject" class="example.MySpringManagedBusinessObject"> ... </bean>
WebApplicationContextVariableResolver
,
FacesContextUtils.getRequiredWebApplicationContext(javax.faces.context.FacesContext)
Field Summary | |
---|---|
protected Log |
logger
Logger available to subclasses |
protected javax.faces.el.VariableResolver |
originalVariableResolver
|
Constructor Summary | |
---|---|
DelegatingVariableResolver(javax.faces.el.VariableResolver originalVariableResolver)
Create a new DelegatingVariableResolver, using the given original VariableResolver. |
Method Summary | |
---|---|
protected BeanFactory |
getBeanFactory(javax.faces.context.FacesContext facesContext)
Retrieve the Spring BeanFactory to delegate bean name resolution to. |
protected javax.faces.el.VariableResolver |
getOriginalVariableResolver()
Return the original JSF VariableResolver that this resolver delegates to. |
protected WebApplicationContext |
getWebApplicationContext(javax.faces.context.FacesContext facesContext)
Retrieve the web application context to delegate bean name resolution to. |
protected Object |
resolveOriginal(javax.faces.context.FacesContext facesContext,
String name)
Resolve the attribute via the original JSF VariableResolver. |
protected Object |
resolveSpringBean(javax.faces.context.FacesContext facesContext,
String name)
Resolve the attribute as a Spring bean in the ApplicationContext. |
Object |
resolveVariable(javax.faces.context.FacesContext facesContext,
String name)
Delegate to the original VariableResolver first, then try to resolve the variable as Spring bean in the root WebApplicationContext. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final Log logger
protected final javax.faces.el.VariableResolver originalVariableResolver
Constructor Detail |
---|
public DelegatingVariableResolver(javax.faces.el.VariableResolver originalVariableResolver)
A JSF implementation will automatically pass its original resolver into the constructor of a configured resolver, provided that there is a corresponding constructor argument.
originalVariableResolver
- the original VariableResolverMethod Detail |
---|
protected final javax.faces.el.VariableResolver getOriginalVariableResolver()
public Object resolveVariable(javax.faces.context.FacesContext facesContext, String name) throws javax.faces.el.EvaluationException
resolveVariable
in class javax.faces.el.VariableResolver
javax.faces.el.EvaluationException
protected Object resolveOriginal(javax.faces.context.FacesContext facesContext, String name)
protected Object resolveSpringBean(javax.faces.context.FacesContext facesContext, String name)
protected BeanFactory getBeanFactory(javax.faces.context.FacesContext facesContext)
The default implementation delegates to getWebApplicationContext
.
Can be overridden to provide an arbitrary BeanFactory reference to resolve
against; usually, this will be a full Spring ApplicationContext.
facesContext
- the current JSF context
null
)getWebApplicationContext(javax.faces.context.FacesContext)
protected WebApplicationContext getWebApplicationContext(javax.faces.context.FacesContext facesContext)
The default implementation delegates to FacesContextUtils.
facesContext
- the current JSF context
null
)FacesContextUtils.getRequiredWebApplicationContext(javax.faces.context.FacesContext)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |