public class CookieLocaleResolver extends CookieGenerator implements LocaleResolver
LocaleResolver
implementation that uses a cookie sent back to the user
in case of a custom setting, with a fallback to the specified default locale
or the request's accept-header locale.
This is particularly useful for stateless applications without user sessions.
Custom controllers can thus override the user's locale by calling
setLocale(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.Locale)
,
for example responding to a certain locale change request.
setDefaultLocale(java.util.Locale)
,
setLocale(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.Locale)
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_COOKIE_NAME
The default cookie name used if none is explicitly set.
|
static String |
LOCALE_REQUEST_ATTRIBUTE_NAME
The name of the request attribute that holds the locale.
|
DEFAULT_COOKIE_MAX_AGE, DEFAULT_COOKIE_PATH, logger
Constructor and Description |
---|
CookieLocaleResolver()
Creates a new instance of the
CookieLocaleResolver class
using the default cookie name . |
Modifier and Type | Method and Description |
---|---|
protected Locale |
determineDefaultLocale(HttpServletRequest request)
Determine the default locale for the given request,
Called if no locale cookie has been found.
|
protected Locale |
getDefaultLocale()
Return the fixed Locale that this resolver will return if no cookie found,
if any.
|
Locale |
resolveLocale(HttpServletRequest request)
Resolve the current locale via the given request.
|
void |
setDefaultLocale(Locale defaultLocale)
Set a fixed Locale that this resolver will return if no cookie found.
|
void |
setLocale(HttpServletRequest request,
HttpServletResponse response,
Locale locale)
Set the current locale to the given one.
|
addCookie, createCookie, getCookieDomain, getCookieMaxAge, getCookieName, getCookiePath, isCookieHttpOnly, isCookieSecure, removeCookie, setCookieDomain, setCookieHttpOnly, setCookieMaxAge, setCookieName, setCookiePath, setCookieSecure
public static final String LOCALE_REQUEST_ATTRIBUTE_NAME
Only used for overriding a cookie value if the locale has been
changed in the course of the current request! Use
RequestContext.getLocale()
to retrieve the current locale in controllers or views.
RequestContext.getLocale()
public static final String DEFAULT_COOKIE_NAME
public CookieLocaleResolver()
CookieLocaleResolver
class
using the default cookie name
.public void setDefaultLocale(Locale defaultLocale)
protected Locale getDefaultLocale()
public Locale resolveLocale(HttpServletRequest request)
LocaleResolver
resolveLocale
in interface LocaleResolver
request
- the request to resolve the locale fornull
)public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
LocaleResolver
setLocale
in interface LocaleResolver
request
- the request to be used for locale modificationresponse
- the response to be used for locale modificationlocale
- the new locale, or null
to clear the localeprotected Locale determineDefaultLocale(HttpServletRequest request)
The default implementation returns the specified default locale, if any, else falls back to the request's accept-header locale.
request
- the request to resolve the locale fornull
)setDefaultLocale(java.util.Locale)
,
ServletRequest.getLocale()