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, e.g. 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 Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected Locale
determineDefaultLocale
(HttpServletRequest request) Deprecated.protected TimeZone
Deprecated.as of 6.0, in favor ofsetDefaultTimeZoneFunction(Function)
resolveLocale
(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.void
setDefaultLocaleFunction
(Function<HttpServletRequest, Locale> defaultLocaleFunction) Set the function used to determine the default locale for the given request, called if noLocale
session attribute has been found.void
setDefaultTimeZoneFunction
(Function<HttpServletRequest, TimeZone> defaultTimeZoneFunction) Set the function used to determine the default time zone for the given request, called if noTimeZone
session attribute has been found.void
setLocaleAttributeName
(String localeAttributeName) Specify the name of the corresponding attribute in theHttpSession
, holding the currentLocale
value.void
setLocaleContext
(HttpServletRequest request, HttpServletResponse response, LocaleContext localeContext) Set the current locale context to the given one, potentially including a locale with associated time zone information.void
setTimeZoneAttributeName
(String timeZoneAttributeName) Specify the name of the corresponding attribute in theHttpSession
, holding the currentTimeZone
value.Methods inherited from class org.springframework.web.servlet.i18n.AbstractLocaleContextResolver
getDefaultTimeZone, setDefaultTimeZone
Methods inherited from class org.springframework.web.servlet.i18n.AbstractLocaleResolver
getDefaultLocale, setDefaultLocale
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.web.servlet.LocaleContextResolver
setLocale
-
Field Details
-
LOCALE_SESSION_ATTRIBUTE_NAME
Default 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_NAME
Default 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
-
SessionLocaleResolver
public SessionLocaleResolver()
-
-
Method Details
-
setLocaleAttributeName
Specify the name of the corresponding attribute in theHttpSession
, holding the currentLocale
value.The default is an internal
LOCALE_SESSION_ATTRIBUTE_NAME
.- Since:
- 4.3.8
-
setTimeZoneAttributeName
Specify the name of the corresponding attribute in theHttpSession
, holding the currentTimeZone
value.The default is an internal
TIME_ZONE_SESSION_ATTRIBUTE_NAME
.- Since:
- 4.3.8
-
setDefaultLocaleFunction
Set the function used to determine the default locale for the given request, called if noLocale
session attribute has been found.The default implementation returns the configured default locale, if any, and otherwise falls back to the request's
Accept-Language
header locale or the default locale for the server.- Parameters:
defaultLocaleFunction
- the function used to determine the default locale- Since:
- 6.0
- See Also:
-
setDefaultTimeZoneFunction
public void setDefaultTimeZoneFunction(Function<HttpServletRequest, TimeZone> defaultTimeZoneFunction) Set the function used to determine the default time zone for the given request, called if noTimeZone
session attribute has been found.The default implementation returns the configured default time zone, if any, or
null
otherwise.- Parameters:
defaultTimeZoneFunction
- the function used to determine the default time zone- Since:
- 6.0
- See Also:
-
resolveLocale
Description copied from interface:LocaleContextResolver
Default 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
)
-
resolveLocaleContext
Description copied from interface:LocaleContextResolver
Resolve the current locale context via the given request.This is primarily intended for framework-level processing; consider using
RequestContextUtils
orRequestContext
for 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 aninstanceof
check 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:
-
setLocaleContext
public void setLocaleContext(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable LocaleContext localeContext) Description copied from interface:LocaleContextResolver
Set 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 modificationresponse
- the response to be used for locale modificationlocaleContext
- the new locale context, ornull
to clear the locale- See Also:
-
determineDefaultLocale
Deprecated.as of 6.0, in favor ofsetDefaultLocaleFunction(Function)
Determine the default locale for the given request, called if noLocale
session attribute has been found.The default implementation returns the configured default locale, if any, and otherwise falls back to the request's
Accept-Language
header locale or the default locale for the server.- Parameters:
request
- the request to resolve the locale for- Returns:
- the default locale (never
null
) - See Also:
-
determineDefaultTimeZone
@Deprecated(since="6.0") @Nullable protected TimeZone determineDefaultTimeZone(HttpServletRequest request) Deprecated.as of 6.0, in favor ofsetDefaultTimeZoneFunction(Function)
Determine the default time zone for the given request, called if noTimeZone
session attribute has been found.The default implementation returns the configured default time zone, if any, or
null
otherwise.- Parameters:
request
- the request to resolve the time zone for- Returns:
- the default time zone (or
null
if none defined) - See Also:
-
setDefaultLocaleFunction(Function)