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 aSessionAttributeStoreinstance.When a controller annotated with
@SessionAttributesadds 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 voidcleanupAttributes(WebRequest request)Remove "known" attributes from the session, i.e.booleanhasSessionAttributes()Whether the controller represented by this instance has declared any session attributes through anSessionAttributesannotation.booleanisHandlerSessionAttribute(String attributeName, Class<?> attributeType)Whether the attribute name or type match the names and types specified via@SessionAttributeson the underlying controller.Map<String,Object>retrieveAttributes(WebRequest request)Retrieve "known" attributes from the session, i.e.voidstoreAttributes(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@SessionAttributesannotation, 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 anSessionAttributesannotation.
isHandlerSessionAttribute
public boolean isHandlerSessionAttribute(String attributeName, Class<?> attributeType)
Whether the attribute name or type match the names and types specified via@SessionAttributeson 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@SessionAttributesare 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@SessionAttributesor 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@SessionAttributesor attributes previously stored in the model that matched by type.- Parameters:
request- the current request