Class SessionLocaleResolver
- All Implemented Interfaces:
- LocaleContextResolver,- LocaleResolver
LocaleResolver implementation that
 uses a locale attribute in the user's session in case of a custom setting,
 with a fallback to the configured default locale, the request's
 Accept-Language header, or the default locale for the server.
 This is most appropriate if the application needs user sessions anyway,
 i.e. when the HttpSession does not have to be created just for storing
 the user's locale. The session may optionally contain an associated time zone
 attribute as well; alternatively, you may specify a default time zone.
 
Custom controllers can override the user's locale and time zone by calling
 #setLocale(Context) on the resolver, for example, responding to a locale change
 request. As a more convenient alternative, consider using
 RequestContext.changeLocale(java.util.Locale).
 
In contrast to CookieLocaleResolver, this strategy stores locally
 chosen locale settings in the Servlet container's HttpSession. As a
 consequence, those settings are just temporary for each session and therefore
 lost when each session terminates.
 
Note that there is no direct relationship with external session management
 mechanisms such as the "Spring Session" project. This LocaleResolver
 will simply evaluate and modify corresponding HttpSession attributes
 against the current HttpServletRequest.
- Since:
- 27.02.2003
- Author:
- Juergen Hoeller, Vedran Pavic
- See Also:
- 
Field SummaryFields
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionresolveLocale(HttpServletRequest request) Default implementation ofLocaleResolver.resolveLocale(HttpServletRequest)that delegates toLocaleContextResolver.resolveLocaleContext(HttpServletRequest), falling back toServletRequest.getLocale()if necessary.resolveLocaleContext(HttpServletRequest request) Resolve the current locale context via the given request.voidsetDefaultLocaleFunction(Function<HttpServletRequest, Locale> defaultLocaleFunction) Set the function used to determine the default locale for the given request, called if noLocalesession attribute has been found.voidsetDefaultTimeZoneFunction(Function<HttpServletRequest, @Nullable TimeZone> defaultTimeZoneFunction) Set the function used to determine the default time zone for the given request, called if noTimeZonesession attribute has been found.voidsetLocaleAttributeName(String localeAttributeName) Specify the name of the corresponding attribute in theHttpSession, holding the currentLocalevalue.voidsetLocaleContext(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable LocaleContext localeContext) Set the current locale context to the given one, potentially including a locale with associated time zone information.voidsetTimeZoneAttributeName(String timeZoneAttributeName) Specify the name of the corresponding attribute in theHttpSession, holding the currentTimeZonevalue.Methods inherited from class org.springframework.web.servlet.i18n.AbstractLocaleContextResolvergetDefaultTimeZone, setDefaultTimeZoneMethods inherited from class org.springframework.web.servlet.i18n.AbstractLocaleResolvergetDefaultLocale, setDefaultLocaleMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.web.servlet.LocaleContextResolversetLocale
- 
Field Details- 
LOCALE_SESSION_ATTRIBUTE_NAMEDefault name of the session attribute that holds the Locale.Only used internally by this implementation. Use RequestContext(Utils).getLocale()to retrieve the current locale in controllers or views.
- 
TIME_ZONE_SESSION_ATTRIBUTE_NAMEDefault name of the session attribute that holds the TimeZone.Only used internally by this implementation. Use RequestContext(Utils).getTimeZone()to retrieve the current time zone in controllers or views.
 
- 
- 
Constructor Details- 
SessionLocaleResolverpublic SessionLocaleResolver()
 
- 
- 
Method Details- 
setLocaleAttributeNameSpecify the name of the corresponding attribute in theHttpSession, holding the currentLocalevalue.The default is an internal LOCALE_SESSION_ATTRIBUTE_NAME.- Since:
- 4.3.8
 
- 
setTimeZoneAttributeNameSpecify the name of the corresponding attribute in theHttpSession, holding the currentTimeZonevalue.The default is an internal TIME_ZONE_SESSION_ATTRIBUTE_NAME.- Since:
- 4.3.8
 
- 
setDefaultLocaleFunctionSet the function used to determine the default locale for the given request, called if noLocalesession attribute has been found.The default implementation returns the configured default locale, if any, and otherwise falls back to the request's Accept-Languageheader locale or the default locale for the server.- Parameters:
- defaultLocaleFunction- the function used to determine the default locale
- Since:
- 6.0
- See Also:
 
- 
setDefaultTimeZoneFunctionpublic void setDefaultTimeZoneFunction(Function<HttpServletRequest, @Nullable TimeZone> defaultTimeZoneFunction) Set the function used to determine the default time zone for the given request, called if noTimeZonesession attribute has been found.The default implementation returns the configured default time zone, if any, or nullotherwise.- Parameters:
- defaultTimeZoneFunction- the function used to determine the default time zone
- Since:
- 6.0
- See Also:
 
- 
resolveLocaleDescription copied from interface:LocaleContextResolverDefault implementation ofLocaleResolver.resolveLocale(HttpServletRequest)that delegates toLocaleContextResolver.resolveLocaleContext(HttpServletRequest), falling back toServletRequest.getLocale()if necessary.- Parameters:
- request- the request to resolve the locale for
- Returns:
- the current locale (never null)
 
- 
resolveLocaleContextDescription copied from interface:LocaleContextResolverResolve the current locale context via the given request.This is primarily intended for framework-level processing; consider using RequestContextUtilsorRequestContextfor application-level access to the current locale and/or time zone.The returned context may be a TimeZoneAwareLocaleContext, containing a locale with associated time zone information. Simply apply aninstanceofcheck and downcast accordingly.Custom resolver implementations may also return extra settings in the returned context, which again can be accessed through downcasting. - Parameters:
- request- the request to resolve the locale context for
- Returns:
- the current locale context (never null
- See Also:
 
- 
setLocaleContextpublic void setLocaleContext(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable LocaleContext localeContext) Description copied from interface:LocaleContextResolverSet the current locale context to the given one, potentially including a locale with associated time zone information.- Parameters:
- request- the request to be used for locale modification
- response- the response to be used for locale modification
- localeContext- the new locale context, or- nullto clear the locale
- See Also:
 
 
-