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 performed via SessionAttributeStore.

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)
          Creates a new instance for a controller type.
 
Method Summary
 void cleanupAttributes(WebRequest request)
          Cleans "known" attributes from the session - i.e.
 boolean hasSessionAttributes()
          Whether the controller represented by this instance has declared session attribute names or types of interest via SessionAttributes.
 boolean isHandlerSessionAttribute(String attributeName, Class<?> attributeType)
          Whether the attribute name and/or type match those specified in the controller's @SessionAttributes annotation.
 Map<String,Object> retrieveAttributes(WebRequest request)
          Retrieve "known" attributes from the session -- i.e.
 void storeAttributes(WebRequest request, Map<String,?> attributes)
          Stores 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)
Creates a new instance for a controller type. Session attribute names/types are extracted from a type-level @SessionAttributes if found.

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 session attribute names or types of interest via SessionAttributes.


isHandlerSessionAttribute

public boolean isHandlerSessionAttribute(String attributeName,
                                         Class<?> attributeType)
Whether the attribute name and/or type match those specified in the controller's @SessionAttributes annotation.

Attributes successfully resolved through this method are "remembered" and used in retrieveAttributes(WebRequest) and cleanupAttributes(WebRequest). In other words, retrieval and cleanup only affect attributes previously resolved through here.

Parameters:
attributeName - the attribute name to check; must not be null
attributeType - the type for the attribute; or null

storeAttributes

public void storeAttributes(WebRequest request,
                            Map<String,?> attributes)
Stores 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 in @SessionAttributes and previously stored in the in the model at least once.

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

cleanupAttributes

public void cleanupAttributes(WebRequest request)
Cleans "known" attributes from the session - i.e. attributes listed in @SessionAttributes and previously stored in the in the model at least once.

Parameters:
request - the current request