## org.springframework.web.context.request
Class FacesRequestAttributes

    java.lang.Object
      org.springframework.web.context.request.FacesRequestAttributes

All Implemented Interfaces:
  RequestAttributes

Direct Known Subclasses:
  FacesWebRequest

    public class FacesRequestAttributes

extends Object
implements RequestAttributes

`RequestAttributes` adapter for a JSF `FacesContext`. Used as default in a JSF environment, wrapping the current FacesContext.

NOTE: In contrast to `ServletRequestAttributes`, this variant does not support destruction callbacks for scoped attributes, neither for the request scope nor for the session scope. If you rely on such implicit destruction callbacks, consider defining a Spring `RequestContextListener` in your `web.xml`.

Since:
  2.5.2
Author:
  Juergen Hoeller
See Also:
  `FacesContext.getExternalContext()`, `ExternalContext.getRequestMap()`, `ExternalContext.getSessionMap()`, `RequestContextHolder.currentRequestAttributes()`

Field Summary

Fields inherited from interface org.springframework.web.context.request.RequestAttributes
`REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION`

Constructor Summary
`FacesRequestAttributes(FacesContext facesContext)` Create a new FacesRequestAttributes adapter for the given FacesContext.

Method Summary
`Object` `getAttribute(String name, int scope)` Return the value for the scoped attribute of the given name, if any.
`protected Map<String,Object>` `getAttributeMap(int scope)` Return the JSF attribute Map for the specified scope
`String[]` `getAttributeNames(int scope)` Retrieve the names of all attributes in the scope.
`protected ExternalContext` `getExternalContext()` Return the JSF ExternalContext that this adapter operates on.
`protected FacesContext` `getFacesContext()` Return the JSF FacesContext that this adapter operates on.
`String` `getSessionId()` Return an id for the current underlying session.
`Object` `getSessionMutex()` Expose the best available mutex for the underlying session: that is, an object to synchronize on for the underlying session.
`void` `registerDestructionCallback(String name, Runnable callback, int scope)` Register a callback to be executed on destruction of the specified attribute in the given scope.
`void` `removeAttribute(String name, int scope)` Remove the scoped attribute of the given name, if it exists.
`Object` `resolveReference(String key)` Resolve the contextual reference for the given key, if any.
`void` `setAttribute(String name, Object value, int scope)` Set the value for the scoped attribute of the given name, replacing an existing value (if any).

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

Constructor Detail

### FacesRequestAttributes

    public FacesRequestAttributes(FacesContext facesContext)

  Create a new FacesRequestAttributes adapter for the given FacesContext.

  Parameters:
    `facesContext` - the current FacesContext
  See Also:
    `FacesContext.getCurrentInstance()`

Method Detail

### getFacesContext

    protected final FacesContext getFacesContext()

  Return the JSF FacesContext that this adapter operates on.

### getExternalContext

    protected final ExternalContext getExternalContext()

  Return the JSF ExternalContext that this adapter operates on.

  See Also:
    `FacesContext.getExternalContext()`

### getAttributeMap

    protected Map<String,Object> getAttributeMap(int scope)

  Return the JSF attribute Map for the specified scope

  Parameters:
    `scope` - constant indicating request or session scope
  Returns:
    the Map representation of the attributes in the specified scope
  See Also:
    `RequestAttributes.SCOPE_REQUEST`, `RequestAttributes.SCOPE_SESSION`

### getAttribute

    public Object getAttribute(String name,
                               int scope)

  Description copied from interface: `RequestAttributes`
  Return the value for the scoped attribute of the given name, if any.

  Specified by:
    `getAttribute` in interface `RequestAttributes`
  Parameters:
    `name` - the name of the attribute
    `scope` - the scope identifier
  Returns:
    the current attribute value, or `null` if not found

### setAttribute

    public void setAttribute(String name,
                             Object value,
                             int scope)

  Description copied from interface: `RequestAttributes`
  Set the value for the scoped attribute of the given name, replacing an existing value (if any).

  Specified by:
    `setAttribute` in interface `RequestAttributes`
  Parameters:
    `name` - the name of the attribute
    `value` - the value for the attribute
    `scope` - the scope identifier

### removeAttribute

    public void removeAttribute(String name,
                                int scope)

  Description copied from interface: `RequestAttributes`
  Remove the scoped attribute of the given name, if it exists.

  Note that an implementation should also remove a registered destruction callback for the specified attribute, if any. It does, however, not need to execute a registered destruction callback in this case, since the object will be destroyed by the caller (if appropriate).

  Specified by:
    `removeAttribute` in interface `RequestAttributes`
  Parameters:
    `name` - the name of the attribute
    `scope` - the scope identifier

### getAttributeNames

    public String[] getAttributeNames(int scope)

  Description copied from interface: `RequestAttributes`
  Retrieve the names of all attributes in the scope.

  Specified by:
    `getAttributeNames` in interface `RequestAttributes`
  Parameters:
    `scope` - the scope identifier
  Returns:
    the attribute names as String array

### registerDestructionCallback

    public void registerDestructionCallback(String name,
                                            Runnable callback,
                                            int scope)

  Description copied from interface: `RequestAttributes`
  Register a callback to be executed on destruction of the specified attribute in the given scope.

  Implementations should do their best to execute the callback at the appropriate time: that is, at request completion or session termination, respectively. If such a callback is not supported by the underlying runtime environment, the callback must be ignored and a corresponding warning should be logged.

  Note that 'destruction' usually corresponds to destruction of the entire scope, not to the individual attribute having been explicitly removed by the application. If an attribute gets removed via this facade's `RequestAttributes.removeAttribute(String, int)` method, any registered destruction callback should be disabled as well, assuming that the removed object will be reused or manually destroyed.

  NOTE: Callback objects should generally be serializable if they are being registered for a session scope. Otherwise the callback (or even the entire session) might not survive web app restarts.

  Specified by:
    `registerDestructionCallback` in interface `RequestAttributes`
  Parameters:
    `name` - the name of the attribute to register the callback for
    `callback` - the destruction callback to be executed
    `scope` - the scope identifier

### resolveReference

    public Object resolveReference(String key)

  Description copied from interface: `RequestAttributes`
  Resolve the contextual reference for the given key, if any.

  At a minimum: the HttpServletRequest/PortletRequest reference for key "request", and the HttpSession/PortletSession reference for key "session".

  Specified by:
    `resolveReference` in interface `RequestAttributes`
  Parameters:
    `key` - the contextual key
  Returns:
    the corresponding object, or `null` if none found

### getSessionId

    public String getSessionId()

  Description copied from interface: `RequestAttributes`
  Return an id for the current underlying session.

  Specified by:
    `getSessionId` in interface `RequestAttributes`
  Returns:
    the session id as String (never `null`

### getSessionMutex

    public Object getSessionMutex()

  Description copied from interface: `RequestAttributes`
  Expose the best available mutex for the underlying session: that is, an object to synchronize on for the underlying session.

  Specified by:
    `getSessionMutex` in interface `RequestAttributes`
  Returns:
    the session mutex to use (never `null`