Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.web.jsf
Class DelegatingVariableResolver

    java.lang.Object
      javax.faces.el.VariableResolver
          org.springframework.web.jsf.DelegatingVariableResolver

    public class DelegatingVariableResolver

extends javax.faces.el.VariableResolver

JSF VariableResolver that first delegates to the original resolver of the underlying JSF implementation, then to the Spring root WebApplicationContext.

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>

Since:
  1.1
Author:
  Juergen Hoeller
See Also:
  `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.
`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

### logger

    protected final Log logger

  Logger available to subclasses

### originalVariableResolver

    protected final javax.faces.el.VariableResolver originalVariableResolver

Constructor Detail

### DelegatingVariableResolver

    public DelegatingVariableResolver(javax.faces.el.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

Method Detail

### getOriginalVariableResolver

    protected final javax.faces.el.VariableResolver getOriginalVariableResolver()

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

### resolveVariable

    public Object resolveVariable(javax.faces.context.FacesContext facesContext,
                                  String name)
                           throws javax.faces.el.EvaluationException

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

  Specified by:
    `resolveVariable` in class `javax.faces.el.VariableResolver`
  Throws:
    `javax.faces.el.EvaluationException`

### getBeanFactory

    protected BeanFactory getBeanFactory(javax.faces.context.FacesContext facesContext)

  Retrieve the Spring BeanFactory to delegate bean name resolution to.

  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`)
  See Also:
    `getWebApplicationContext(javax.faces.context.FacesContext)`

### getWebApplicationContext

    protected WebApplicationContext getWebApplicationContext(javax.faces.context.FacesContext facesContext)

  Retrieve the web application context to delegate bean name resolution to.

  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)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2007 The Spring Framework.