类 CookieLocaleResolver
- java.lang.Object
- org.springframework.web.util.CookieGenerator
- org.springframework.web.servlet.i18n.CookieLocaleResolver
- 所有已实现的接口:
LocaleContextResolver
,LocaleResolver
public class CookieLocaleResolver extends CookieGenerator implements LocaleContextResolver
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. 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. As a more convenient alternative, consider usingRequestContext.changeLocale(java.util.Locale)
.- 从以下版本开始:
- 27.02.2003
- 作者:
- Juergen Hoeller, Jean-Pierre Pawlak
- 另请参阅:
setDefaultLocale(java.util.Locale)
,setDefaultTimeZone(java.util.TimeZone)
字段概要
字段 修饰符和类型 字段 说明 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 theLocale
.static String
TIME_ZONE_REQUEST_ATTRIBUTE_NAME
The name of the request attribute that holds theTimeZone
.从类继承的字段 org.springframework.web.util.CookieGenerator
DEFAULT_COOKIE_PATH, logger
构造器概要
构造器 构造器 说明 CookieLocaleResolver()
Create a new instance of theCookieLocaleResolver
class using thedefault cookie name
.
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected Locale
determineDefaultLocale(HttpServletRequest request)
Determine the default locale for the given request, Called if no locale cookie has been found.protected TimeZone
determineDefaultTimeZone(HttpServletRequest request)
Determine the default time zone for the given request, Called if no time zone cookie has been found.protected Locale
getDefaultLocale()
Return the fixed locale that this resolver will return if no cookie found, if any.protected TimeZone
getDefaultTimeZone()
Return the fixed time zone that this resolver will return if no cookie found, if any.boolean
isLanguageTagCompliant()
Return whether this resolver's cookies should be compliant with BCP 47 language tags instead of Java's legacy locale specification format.protected Locale
parseLocaleValue(String locale)
Parse the given locale value coming from an incoming cookie.Locale
resolveLocale(HttpServletRequest request)
Resolve the current locale via the given request.LocaleContext
resolveLocaleContext(HttpServletRequest request)
Resolve the current locale context via the given request.void
setDefaultLocale(Locale defaultLocale)
Set a fixed locale that this resolver will return if no cookie found.void
setDefaultTimeZone(TimeZone defaultTimeZone)
Set a fixed time zone that this resolver will return if no cookie found.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.void
setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
Set the current locale to the given one.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.protected String
toLocaleValue(Locale locale)
Render the given locale as a text value for inclusion in a cookie.从类继承的方法 org.springframework.web.util.CookieGenerator
addCookie, createCookie, getCookieDomain, getCookieMaxAge, getCookieName, getCookiePath, isCookieHttpOnly, isCookieSecure, removeCookie, setCookieDomain, setCookieHttpOnly, setCookieMaxAge, setCookieName, setCookiePath, setCookieSecure
字段详细资料
LOCALE_REQUEST_ATTRIBUTE_NAME
public static final String 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
public static final String 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
public static final String DEFAULT_COOKIE_NAME
The default cookie name used if none is explicitly set.
构造器详细资料
CookieLocaleResolver
public CookieLocaleResolver()
Create a new instance of theCookieLocaleResolver
class using thedefault 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 isfalse
.Note: This mode requires JDK 7 or higher. Set this flag to
true
for BCP 47 compliance on JDK 7+ only.- 从以下版本开始:
- 4.3
- 另请参阅:
Locale.forLanguageTag(String)
,Locale.toLanguageTag()
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.- 从以下版本开始:
- 4.3
setDefaultLocale
public void setDefaultLocale(Locale defaultLocale)
Set a fixed locale that this resolver will return if no cookie found.
getDefaultLocale
protected Locale getDefaultLocale()
Return the fixed locale that this resolver will return if no cookie found, if any.
setDefaultTimeZone
public void setDefaultTimeZone(TimeZone defaultTimeZone)
Set a fixed time zone that this resolver will return if no cookie found.- 从以下版本开始:
- 4.0
getDefaultTimeZone
protected TimeZone getDefaultTimeZone()
Return the fixed time zone that this resolver will return if no cookie found, if any.- 从以下版本开始:
- 4.0
resolveLocale
public Locale resolveLocale(HttpServletRequest request)
从接口复制的说明:LocaleResolver
Resolve 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
public LocaleContext resolveLocaleContext(HttpServletRequest request)
从接口复制的说明: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.
- 指定者:
resolveLocaleContext
在接口中LocaleContextResolver
- 参数:
request
- the request to resolve the locale context for- 返回:
- the current locale context (never
null
- 另请参阅:
LocaleResolver.resolveLocale(HttpServletRequest)
,RequestContextUtils.getLocale(javax.servlet.http.HttpServletRequest)
,RequestContextUtils.getTimeZone(javax.servlet.http.HttpServletRequest)
setLocale
public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
从接口复制的说明:LocaleResolver
Set the current locale to the given one.- 指定者:
setLocale
在接口中LocaleResolver
- 参数:
request
- the request to be used for locale modificationresponse
- the response to be used for locale modificationlocale
- the new locale, ornull
to clear the locale
setLocaleContext
public void setLocaleContext(HttpServletRequest request, HttpServletResponse response, LocaleContext localeContext)
从接口复制的说明:LocaleContextResolver
Set 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 modificationresponse
- the response to be used for locale modificationlocaleContext
- the new locale context, ornull
to clear the locale- 另请参阅:
LocaleResolver.setLocale(HttpServletRequest, HttpServletResponse, Locale)
,SimpleLocaleContext
,SimpleTimeZoneAwareLocaleContext
parseLocaleValue
@UsesJava7 protected Locale parseLocaleValue(String locale)
Parse the given locale value coming from an incoming cookie.The default implementation calls
StringUtils.parseLocaleString(String)
or JDK 7'sLocale.forLanguageTag(String)
, depending on the"languageTagCompliant"
configuration property.- 参数:
locale
- the locale value to parse- 返回:
- the corresponding
Locale
instance - 从以下版本开始:
- 4.3
toLocaleValue
@UsesJava7 protected String toLocaleValue(Locale locale)
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
- 从以下版本开始:
- 4.3
determineDefaultLocale
protected Locale determineDefaultLocale(HttpServletRequest request)
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
) - 另请参阅:
setDefaultLocale(java.util.Locale)
,ServletRequest.getLocale()
determineDefaultTimeZone
protected TimeZone determineDefaultTimeZone(HttpServletRequest request)
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
null
otherwise.- 参数:
request
- the request to resolve the time zone for- 返回:
- the default time zone (or
null
if none defined) - 另请参阅:
setDefaultTimeZone(java.util.TimeZone)