public class SessionAttributesHandler extends Object
@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()
.
Constructor and Description |
---|
SessionAttributesHandler(Class<?> handlerType,
SessionAttributeStore sessionAttributeStore)
Create a new instance for a controller type.
|
Modifier and Type | Method and 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 an
SessionAttributes 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.
|
public SessionAttributesHandler(Class<?> handlerType, SessionAttributeStore sessionAttributeStore)
@SessionAttributes
annotation, if
present, on the given type.handlerType
- the controller typesessionAttributeStore
- used for session accesspublic boolean hasSessionAttributes()
SessionAttributes
annotation.public boolean isHandlerSessionAttribute(String attributeName, Class<?> attributeType)
@SessionAttributes
on the underlying controller.
Attributes successfully resolved through this method are "remembered"
and subsequently used in retrieveAttributes(WebRequest)
and
cleanupAttributes(WebRequest)
.
attributeName
- the attribute name to checkattributeType
- the type for the attributepublic void storeAttributes(WebRequest request, Map<String,?> attributes)
@SessionAttributes
are ignored.request
- the current requestattributes
- candidate attributes for session storagepublic Map<String,Object> retrieveAttributes(WebRequest request)
@SessionAttributes
or attributes previously stored
in the model that matched by type.request
- the current requestpublic void cleanupAttributes(WebRequest request)
@SessionAttributes
or attributes previously stored
in the model that matched by type.request
- the current request