org.springframework.web.jsf

## Class DelegatingVariableResolver

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

- Direct Known Subclasses:
    SpringBeanVariableResolver

  Deprecated.
  as of Spring 3.2, in favor of the JSF 1.2 based `SpringBeanFacesELResolver`

      @Deprecated
      public class DelegatingVariableResolver
      extends VariableResolver

  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>

  Since:
    1.1
  Author:
    Juergen Hoeller
  See Also:
    `WebApplicationContextVariableResolver`, `FacesContextUtils.getRequiredWebApplicationContext(javax.faces.context.FacesContext)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger` Deprecated. Logger available to subclasses
    `protected VariableResolver` | `originalVariableResolver` Deprecated.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DelegatingVariableResolver(VariableResolver originalVariableResolver)` Deprecated. Create a new DelegatingVariableResolver, using the given original VariableResolver.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected BeanFactory` | `getBeanFactory(FacesContext facesContext)` Deprecated. Retrieve the Spring BeanFactory to delegate bean name resolution to.
    `protected VariableResolver` | `getOriginalVariableResolver()` Deprecated. Return the original JSF VariableResolver that this resolver delegates to.
    `protected WebApplicationContext` | `getWebApplicationContext(FacesContext facesContext)` Deprecated. Retrieve the web application context to delegate bean name resolution to.
    `protected Object` | `resolveOriginal(FacesContext facesContext, String name)` Deprecated. Resolve the attribute via the original JSF VariableResolver.
    `protected Object` | `resolveSpringBean(FacesContext facesContext, String name)` Deprecated. Resolve the attribute as a Spring bean in the ApplicationContext.
    `Object` | `resolveVariable(FacesContext facesContext, String name)` Deprecated. 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

      Deprecated.
      Logger available to subclasses

    - #### originalVariableResolver

          protected final VariableResolver originalVariableResolver

      Deprecated.

  - ### Constructor Detail

    - #### DelegatingVariableResolver

          public DelegatingVariableResolver(VariableResolver originalVariableResolver)

      Deprecated.
      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 VariableResolver getOriginalVariableResolver()

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

    - #### resolveVariable

          public Object resolveVariable(FacesContext facesContext,
                               String name)
                                 throws EvaluationException

      Deprecated.
      Delegate to the original VariableResolver first, then try to resolve the variable as Spring bean in the root WebApplicationContext.
      Specified by:
        `resolveVariable` in class `VariableResolver`
      Throws:
        `EvaluationException`

    - #### resolveOriginal

          protected Object resolveOriginal(FacesContext facesContext,
                               String name)

      Deprecated.
      Resolve the attribute via the original JSF VariableResolver.

    - #### resolveSpringBean

          protected Object resolveSpringBean(FacesContext facesContext,
                                 String name)

      Deprecated.
      Resolve the attribute as a Spring bean in the ApplicationContext.

    - #### getBeanFactory

          protected BeanFactory getBeanFactory(FacesContext facesContext)

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

    - #### getWebApplicationContext

          protected WebApplicationContext getWebApplicationContext(FacesContext facesContext)

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