类 CookieLocaleResolver
- 所有已实现的接口:
LocaleContextResolver,LocaleResolver
LocaleResolver implementation that uses a cookie sent back to the user
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 particularly useful for stateless applications without user sessions. The cookie may optionally contain an associated time zone value 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.
- 从以下版本开始:
- 4.0
- 作者:
- Juergen Hoeller, Jean-Pierre Pawlak
- 另请参阅:
-
字段概要
字段修饰符和类型字段说明static final StringThe default cookie name used if none is explicitly set.private Localeprivate TimeZoneprivate booleanstatic final StringThe name of the request attribute that holds theLocale.private booleanstatic final StringThe name of the request attribute that holds theTimeZone.从类继承的字段 cn.taketoday.web.servlet.CookieGenerator
DEFAULT_COOKIE_PATH, logger从接口继承的字段 cn.taketoday.web.LocaleResolver
BEAN_NAME -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明protected LocaledetermineDefaultLocale(RequestContext request) Determine the default locale for the given request, Called if no locale cookie has been found.protected TimeZonedetermineDefaultTimeZone(RequestContext request) Determine the default time zone for the given request, Called if no time zone cookie has been found.protected LocaleReturn the fixed locale that this resolver will return if no cookie found, if any.protected TimeZoneReturn the fixed time zone that this resolver will return if no cookie is found, if any.booleanReturn whether this resolver's cookies should be compliant with BCP 47 language tags instead of Java's legacy locale specification format.booleanReturn whether to reject cookies with invalid content (e.g. invalid format).private voidprotected LocaleparseLocaleValue(String localeValue) Parse the given locale value coming from an incoming cookie.resolveLocale(RequestContext request) Resolve the current locale via the given request.cn.taketoday.core.i18n.LocaleContextresolveLocaleContext(RequestContext request) Resolve the current locale context via the given request.voidsetDefaultLocale(Locale defaultLocale) Set a fixed locale that this resolver will return if no cookie is found.voidsetDefaultTimeZone(TimeZone defaultTimeZone) Set a fixed time zone that this resolver will return if no cookie is found.voidsetLanguageTagCompliant(boolean languageTagCompliant) Specify whether this resolver's cookies should be compliant with BCP 47 language tags instead of Java's legacy locale specification format.voidsetLocale(RequestContext request, Locale locale) Set the current locale to the given one.voidsetLocaleContext(RequestContext request, cn.taketoday.core.i18n.LocaleContext localeContext) Set the current locale context to the given one, potentially including a locale with associated time zone information.voidsetRejectInvalidCookies(boolean rejectInvalidCookies) Specify whether to reject cookies with invalid content (e.g. invalid format).protected StringtoLocaleValue(Locale locale) Render the given locale as a text value for inclusion in a cookie.从类继承的方法 cn.taketoday.web.servlet.CookieGenerator
addCookie, createCookie, getCookieDomain, getCookieMaxAge, getCookieName, getCookiePath, getCookieSameSite, isCookieHttpOnly, isCookieSecure, removeCookie, setCookieDomain, setCookieHttpOnly, setCookieMaxAge, setCookieName, setCookiePath, setCookieSameSite, setCookieSecure
-
字段详细资料
-
LOCALE_REQUEST_ATTRIBUTE_NAME
The name of the request attribute that holds theLocale.Only used for overriding a cookie value if the locale has been changed in the course of the current request!
Use
RequestContext(Utils).getLocale()to retrieve the current locale in controllers or views. -
TIME_ZONE_REQUEST_ATTRIBUTE_NAME
The name of the request attribute that holds theTimeZone.Only used for overriding a cookie value if the locale has been changed in the course of the current request!
Use
RequestContext(Utils).getTimeZone()to retrieve the current time zone in controllers or views. -
DEFAULT_COOKIE_NAME
The default cookie name used if none is explicitly set. -
languageTagCompliant
private boolean languageTagCompliant -
rejectInvalidCookies
private boolean rejectInvalidCookies -
defaultLocale
-
defaultTimeZone
-
-
构造器详细资料
-
CookieLocaleResolver
public CookieLocaleResolver()Create a new instance ofCookieLocaleResolverusing the default cookie name.
-
-
方法详细资料
-
setLanguageTagCompliant
public void setLanguageTagCompliant(boolean languageTagCompliant) Specify whether this resolver's cookies should be compliant with BCP 47 language tags instead of Java's legacy locale specification format.The default is
true, as of 5.1. Switch this tofalsefor rendering Java's legacy locale specification format. For parsing, this resolver leniently accepts the legacyLocale.toString()format as well as BCP 47 language tags in any case. -
isLanguageTagCompliant
public boolean isLanguageTagCompliant()Return whether this resolver's cookies should be compliant with BCP 47 language tags instead of Java's legacy locale specification format. -
setRejectInvalidCookies
public void setRejectInvalidCookies(boolean rejectInvalidCookies) Specify whether to reject cookies with invalid content (e.g. invalid format).The default is
true. Turn this off for lenient handling of parse failures, falling back to the default locale and time zone in such a case. -
isRejectInvalidCookies
public boolean isRejectInvalidCookies()Return whether to reject cookies with invalid content (e.g. invalid format). -
setDefaultLocale
Set a fixed locale that this resolver will return if no cookie is found. -
getDefaultLocale
Return the fixed locale that this resolver will return if no cookie found, if any. -
setDefaultTimeZone
Set a fixed time zone that this resolver will return if no cookie is found. -
getDefaultTimeZone
Return the fixed time zone that this resolver will return if no cookie is found, if any. -
resolveLocale
从接口复制的说明:LocaleResolverResolve the current locale via the given request. Can return a default locale as fallback in any case.- 指定者:
resolveLocale在接口中LocaleResolver- 参数:
request- the request to resolve the locale for- 返回:
- the current locale (never
null)
-
resolveLocaleContext
从接口复制的说明: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.
- 指定者:
resolveLocaleContext在接口中LocaleContextResolver- 参数:
request- the request to resolve the locale context for- 返回:
- the current locale context (never
null - 另请参阅:
-
parseLocaleCookieIfNecessary
-
setLocale
从接口复制的说明:LocaleResolverSet the current locale to the given one.- 指定者:
setLocale在接口中LocaleResolver- 参数:
request- the request to be used for locale modificationlocale- the new locale, ornullto clear the locale
-
setLocaleContext
public void setLocaleContext(RequestContext request, @Nullable cn.taketoday.core.i18n.LocaleContext localeContext) 从接口复制的说明:LocaleContextResolverSet the current locale context to the given one, potentially including a locale with associated time zone information.- 指定者:
setLocaleContext在接口中LocaleContextResolver- 参数:
request- the request to be used for locale modificationlocaleContext- the new locale context, ornullto clear the locale- 另请参阅:
-
LocaleResolver.setLocale(RequestContext, Locale)SimpleLocaleContextSimpleTimeZoneAwareLocaleContext
-
parseLocaleValue
Parse the given locale value coming from an incoming cookie.The default implementation calls
StringUtils.parseLocale(String), accepting theLocale.toString()format as well as BCP 47 language tags.- 参数:
localeValue- the locale value to parse- 返回:
- the corresponding
Localeinstance - 另请参阅:
-
StringUtils.parseLocale(String)
-
toLocaleValue
Render the given locale as a text value for inclusion in a cookie.The default implementation calls
Locale.toString()or JDK 7'sLocale.toLanguageTag(), depending on the"languageTagCompliant"configuration property.- 参数:
locale- the locale to stringify- 返回:
- a String representation for the given locale
- 另请参阅:
-
determineDefaultLocale
Determine the default locale for the given request, Called if no locale cookie has been found.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 for- 返回:
- the default locale (never
null) - 另请参阅:
-
determineDefaultTimeZone
Determine the default time zone for the given request, Called if no time zone cookie has been found.The default implementation returns the specified default time zone, if any, or
nullotherwise.- 参数:
request- the request to resolve the time zone for- 返回:
- the default time zone (or
nullif none defined) - 另请参阅:
-