public class

DelegatingVariableResolver

extends VariableResolver
java.lang.Object
   ↳ VariableResolver
     ↳ org.springframework.web.jsf.DelegatingVariableResolver
Known Direct Subclasses

Class Overview

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>

Summary

Fields
protected final Log logger Logger available to subclasses
protected final VariableResolver originalVariableResolver
Public Constructors
DelegatingVariableResolver(VariableResolver originalVariableResolver)
Create a new DelegatingVariableResolver, using the given original VariableResolver.
Public Methods
Object resolveVariable(FacesContext facesContext, String name)
Delegate to the original VariableResolver first, then try to resolve the variable as Spring bean in the root WebApplicationContext.
Protected Methods
BeanFactory getBeanFactory(FacesContext facesContext)
Retrieve the Spring BeanFactory to delegate bean name resolution to.
final VariableResolver getOriginalVariableResolver()
Return the original JSF VariableResolver that this resolver delegates to.
WebApplicationContext getWebApplicationContext(FacesContext facesContext)
Retrieve the web application context to delegate bean name resolution to.
Object resolveOriginal(FacesContext facesContext, String name)
Resolve the attribute via the original JSF VariableResolver.
Object resolveSpringBean(FacesContext facesContext, String name)
Resolve the attribute as a Spring bean in the ApplicationContext.
[Expand]
Inherited Methods
From class java.lang.Object

Fields

protected final Log logger

Logger available to subclasses

protected final VariableResolver originalVariableResolver

Public Constructors

public DelegatingVariableResolver (VariableResolver originalVariableResolver)

Create a new DelegatingVariableResolver, using the given original VariableResolver.

A JSF implementation will automatically pass its original resolver into the constructor of a configured resolver, provided that there is a corresponding constructor argument.

Parameters
originalVariableResolver the original VariableResolver

Public Methods

public Object resolveVariable (FacesContext facesContext, String name)

Delegate to the original VariableResolver first, then try to resolve the variable as Spring bean in the root WebApplicationContext.

Throws
EvaluationException

Protected Methods

protected BeanFactory 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 BeanFactory reference to resolve against; usually, this will be a full Spring ApplicationContext.

Parameters
facesContext the current JSF context
Returns
  • the Spring BeanFactory (never null)

protected final VariableResolver getOriginalVariableResolver ()

Return the original JSF VariableResolver that this resolver delegates to. Used to resolve standard JSF-managed beans.

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)

protected Object resolveOriginal (FacesContext facesContext, String name)

Resolve the attribute via the original JSF VariableResolver.

protected Object resolveSpringBean (FacesContext facesContext, String name)

Resolve the attribute as a Spring bean in the ApplicationContext.