类 SessionLocaleResolver
- java.lang.Object
- org.springframework.web.servlet.i18n.AbstractLocaleResolver
- org.springframework.web.servlet.i18n.AbstractLocaleContextResolver
- org.springframework.web.servlet.i18n.SessionLocaleResolver
- 所有已实现的接口:
LocaleContextResolver,LocaleResolver
public class SessionLocaleResolver extends AbstractLocaleContextResolver
LocaleResolverimplementation that uses a locale attribute in the user's session in case of a custom setting, with a fallback to the specified default locale or the request's accept-header locale.This is most appropriate if the application needs user sessions anyway, i.e. when the
HttpSessiondoes 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 usingRequestContext.changeLocale(java.util.Locale).In contrast to
CookieLocaleResolver, this strategy stores locally chosen locale settings in the Servlet container'sHttpSession. 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
LocaleResolverwill simply evaluate and modify correspondingHttpSessionattributes against the currentHttpServletRequest.- 从以下版本开始:
- 27.02.2003
- 作者:
- Juergen Hoeller
- 另请参阅:
AbstractLocaleResolver.setDefaultLocale(java.util.Locale),AbstractLocaleContextResolver.setDefaultTimeZone(java.util.TimeZone)
字段概要
字段 修饰符和类型 字段 说明 static StringLOCALE_SESSION_ATTRIBUTE_NAMEName of the session attribute that holds the Locale.static StringTIME_ZONE_SESSION_ATTRIBUTE_NAMEName of the session attribute that holds the TimeZone.
构造器概要
构造器 构造器 说明 SessionLocaleResolver()
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected LocaledetermineDefaultLocale(HttpServletRequest request)Determine the default locale for the given request, Called if no Locale session attribute has been found.protected TimeZonedetermineDefaultTimeZone(HttpServletRequest request)Determine the default time zone for the given request, Called if no TimeZone session attribute has been found.LocaleresolveLocale(HttpServletRequest request)Resolve the current locale via the given request.LocaleContextresolveLocaleContext(HttpServletRequest request)Resolve the current locale context via the given request.voidsetLocaleAttributeName(String localeAttributeName)Specify the name of the corresponding attribute in theHttpSession, holding the currentLocalevalue.voidsetLocaleContext(HttpServletRequest request, HttpServletResponse response, 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.从类继承的方法 org.springframework.web.servlet.i18n.AbstractLocaleContextResolver
getDefaultTimeZone, setDefaultTimeZone, setLocale
从类继承的方法 org.springframework.web.servlet.i18n.AbstractLocaleResolver
getDefaultLocale, setDefaultLocale
字段详细资料
LOCALE_SESSION_ATTRIBUTE_NAME
public static final String LOCALE_SESSION_ATTRIBUTE_NAME
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
public static final String TIME_ZONE_SESSION_ATTRIBUTE_NAME
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.
构造器详细资料
SessionLocaleResolver
public SessionLocaleResolver()
方法详细资料
setLocaleAttributeName
public void setLocaleAttributeName(String localeAttributeName)
Specify the name of the corresponding attribute in theHttpSession, holding the currentLocalevalue.The default is an internal
LOCALE_SESSION_ATTRIBUTE_NAME.- 从以下版本开始:
- 4.3.8
setTimeZoneAttributeName
public void setTimeZoneAttributeName(String timeZoneAttributeName)
Specify the name of the corresponding attribute in theHttpSession, holding the currentTimeZonevalue.The default is an internal
TIME_ZONE_SESSION_ATTRIBUTE_NAME.- 从以下版本开始:
- 4.3.8
resolveLocale
public Locale resolveLocale(HttpServletRequest request)
从接口复制的说明:LocaleResolverResolve the current locale via the given request. Can return a default locale as fallback in any case.- 指定者:
resolveLocale在接口中LocaleResolver- 覆盖:
resolveLocale在类中AbstractLocaleContextResolver- 参数:
request- the request to resolve the locale for- 返回:
- the current locale (never
null)
resolveLocaleContext
public LocaleContext resolveLocaleContext(HttpServletRequest request)
从接口复制的说明: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.
- 参数:
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)
setLocaleContext
public void setLocaleContext(HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable LocaleContext localeContext)
从接口复制的说明:LocaleContextResolverSet the current locale context to the given one, potentially including a locale with associated time zone information.- 参数:
request- the request to be used for locale modificationresponse- the response to be used for locale modificationlocaleContext- the new rg.springframework.context.i18n中的类">SimpleTimeZoneAwareLocaleContext
determineDefaultLocale
protected Locale determineDefaultLocale(HttpServletRequest request)
Determine the default locale for the given request, Called if no Locale session attribute 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) - 另请参阅:
AbstractLocaleResolver.setDefaultLocale(java.util.Locale),ServletRequest.getLocale()
determineDefaultTimeZone
@Nullable protected TimeZone determineDefaultTimeZone(HttpServletRequest request)
Determine the default time zone for the given request, Called if no TimeZone session attribute 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) - 另请参阅:
AbstractLocaleContextResolver.setDefaultTimeZone(java.util.TimeZone)