org.springframework.web.method.annotation
Class SessionAttributesHandler

java.lang.Object
  extended by org.springframework.web.method.annotation.SessionAttributesHandler

public class SessionAttributesHandler
extends Object

Manages controller-specific session attributes declared via @SessionAttributes. Actual storage is delegated to a SessionAttributeStore instance.

When a controller annotated with @SessionAttributes adds attributes to its model, those attributes are checked against names and types specified via @SessionAttributes. Matching model attributes are saved in the HTTP session and remain there until the controller calls SessionStatus.setComplete().

Since:
3.1
Author:
Rossen Stoyanchev

Constructor Summary
SessionAttributesHandler(Class<?> handlerType, SessionAttributeStore sessionAttributeStore)
          Create a new instance for a controller type.
 
Method Summary
 void cleanupAttributes(WebRequest request)
          Remove "known" attributes from the session, i.e.
 boolean hasSessionAttributes()
          Whether the controller represented by this instance has declared any session attributes through an SessionAttributes annotation.
 boolean isHandlerSessionAttribute(String attributeName, Class<?> attributeType)
          Whether the attribute name or type match the names and types specified via @SessionAttributes in underlying controller.
 Map<String,Object> retrieveAttributes(WebRequest request)
          Retrieve "known" attributes from the session, i.e.
 void storeAttributes(WebRequest request, Map<String,?> attributes)
          Store a subset of the given attributes in the session.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SessionAttributesHandler

public SessionAttributesHandler(Class<?> handlerType,
                                SessionAttributeStore sessionAttributeStore)
Create a new instance for a controller type. Session attribute names and types are extracted from the @SessionAttributes annotation, if present, on the given type.

Parameters:
handlerType - the controller type
sessionAttributeStore - used for session access
Method Detail

hasSessionAttributes

public boolean hasSessionAttributes()
Whether the controller represented by this instance has declared any session attributes through an SessionAttributes annotation.


isHandlerSessionAttribute

public boolean isHandlerSessionAttribute(String attributeName,
                                         Class<?> attributeType)
Whether the attribute name or type match the names and types specified via @SessionAttributes in underlying controller.

Attributes successfully resolved through this method are "remembered" and subsequently used in retrieveAttributes(WebRequest) and cleanupAttributes(WebRequest).

Parameters:
attributeName - the attribute name to check, never null
attributeType - the type for the attribute, possibly null

storeAttributes

public void storeAttributes(WebRequest request,
                            Map<String,?> attributes)
Store a subset of the given attributes in the session. Attributes not declared as session attributes via @SessionAttributes are ignored.

Parameters:
request - the current request
attributes - candidate attributes for session storage

retrieveAttributes

public Map<String,Object> retrieveAttributes(WebRequest request)
Retrieve "known" attributes from the session, i.e. attributes listed by name in @SessionAttributes or attributes previously stored in the model that matched by type.

Parameters:
request - the current request
Returns:
a map with handler session attributes, possibly empty

cleanupAttributes

public void cleanupAttributes(WebRequest request)
Remove "known" attributes from the session, i.e. attributes listed by name in @SessionAttributes or attributes previously stored in the model that matched by type.

Parameters:
request - the current request