## org.springframework.web.jsf
Class WebApplicationContextVariableResolver

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

    public class WebApplicationContextVariableResolver

extends javax.faces.el.VariableResolver

Special JSF 1.1 `VariableResolver` that exposes the Spring `WebApplicationContext` instance under a variable named "webApplicationContext".

In contrast to `DelegatingVariableResolver`, this VariableResolver does not resolve JSF variable names as Spring bean names. It rather exposes Spring's root WebApplicationContext itself under a special name. JSF-managed beans can then use Spring's WebApplicationContext API to retrieve Spring-managed beans, access resources, etc.

Configure this resolver in your `faces-config.xml` file as follows:

     <application>
       ...
       <variable-resolver>org.springframework.web.jsf.WebApplicationContextVariableResolver</variable-resolver>
     </application>

Since:
  1.2.5
Author:
  Colin Sampaleanu, Juergen Hoeller
See Also:
  `DelegatingVariableResolver`, `FacesContextUtils.getWebApplicationContext(javax.faces.context.FacesContext)`

Field Summary
`protected javax.faces.el.VariableResolver` `originalVariableResolver`
`static String` `WEB_APPLICATION_CONTEXT_VARIABLE_NAME` Name of the exposed WebApplicationContext variable: "webApplicationContext".

Constructor Summary
`WebApplicationContextVariableResolver(javax.faces.el.VariableResolver originalVariableResolver)` Create a new WebApplicationContextVariableResolver, using the given original VariableResolver.

Method Summary
`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 WebApplicationContext reference to expose.
`Object` `resolveVariable(javax.faces.context.FacesContext context, String name)` Check for the special "webApplicationContext" variable first, then delegate to the original VariableResolver.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### WEB_APPLICATION_CONTEXT_VARIABLE_NAME

    public static final String WEB_APPLICATION_CONTEXT_VARIABLE_NAME

  Name of the exposed WebApplicationContext variable: "webApplicationContext".

  See Also:
    Constant Field Values

### originalVariableResolver

    protected final javax.faces.el.VariableResolver originalVariableResolver

Constructor Detail

### WebApplicationContextVariableResolver

    public WebApplicationContextVariableResolver(javax.faces.el.VariableResolver originalVariableResolver)

  Create a new WebApplicationContextVariableResolver, 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 context,
                                  String name)
                           throws javax.faces.el.EvaluationException

  Check for the special "webApplicationContext" variable first, then delegate to the original VariableResolver.

  If no WebApplicationContext is available, all requests will be delegated to the original VariableResolver.

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

### getWebApplicationContext

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

  Retrieve the WebApplicationContext reference to expose.

  The default implementation delegates to FacesContextUtils, returning `null` if no WebApplicationContext found.

  Parameters:
    `facesContext` - the current JSF context
  Returns:
    the Spring web application context
  See Also:
    `FacesContextUtils.getWebApplicationContext(javax.faces.context.FacesContext)`