Class SessionAttributesHandler
java.lang.Object
org.springframework.web.method.annotation.SessionAttributesHandler
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, Juergen Hoeller
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Key for known-attribute-names storage (a String array) as a session attribute. -
Constructor Summary
ConstructorDescriptionSessionAttributesHandler
(Class<?> handlerType, SessionAttributeStore sessionAttributeStore) Create a new session attributes handler. -
Method Summary
Modifier and TypeMethodDescriptionvoid
cleanupAttributes
(WebRequest request) Remove "known" attributes from the session, i.e.boolean
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.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.
-
Field Details
-
SESSION_KNOWN_ATTRIBUTE
Key for known-attribute-names storage (a String array) as a session attribute.This is necessary for consistent handling of type-based session attributes in distributed session scenarios where handler methods from the same class may get invoked on different servers.
- Since:
- 6.1.4
-
-
Constructor Details
-
SessionAttributesHandler
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 Details
-
hasSessionAttributes
public boolean hasSessionAttributes()Whether the controller represented by this instance has declared any session attributes through anSessionAttributes
annotation. -
isHandlerSessionAttribute
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
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
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
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
-