Class SessionAttributesHandler
- java.lang.Object
- org.springframework.web.method.annotation.SessionAttributesHandler
public class SessionAttributesHandler extends Object
Manages controller-specific session attributes declared via@SessionAttributes
. Actual storage is delegated to aSessionAttributeStore
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 callsSessionStatus.setComplete()
.- Since:
- 3.1
- Author:
- Rossen Stoyanchev, Juergen Hoeller
Constructor Summary
Constructors Constructor Description SessionAttributesHandler(Class<?> handlerType, SessionAttributeStore sessionAttributeStore)
Create a new session attributes handler.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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 anSessionAttributes
annotation.boolean
isHandlerSessionAttribute(String attributeName, Class<?> attributeType)
Whether the attribute name or type match the names and types specified via@SessionAttributes
on the 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.
Constructor Detail
SessionAttributesHandler
public SessionAttributesHandler(Class<?> handlerType, SessionAttributeStore sessionAttributeStore)
Create a new session attributes handler. Session attribute names and types are extracted from the@SessionAttributes
annotation, if present, on the given type.- Parameters:
handlerType
- the controller typesessionAttributeStore
- used for session access
Method Detail
hasSessionAttributes
public boolean hasSessionAttributes()
Whether the controller represented by this instance has declared any session attributes through anSessionAttributes
annotation.
isHandlerSessionAttribute
public boolean isHandlerSessionAttribute(String attributeName, Class<?> attributeType)
Whether the attribute name or type match the names and types specified via@SessionAttributes
on the underlying controller.Attributes successfully resolved through this method are "remembered" and subsequently used in
retrieveAttributes(WebRequest)
andcleanupAttributes(WebRequest)
.- Parameters:
attributeName
- the attribute name to checkattributeType
- the type for the attribute
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 requestattributes
- 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