类 CookieLocaleResolver

java.lang.Object
cn.taketoday.web.servlet.CookieGenerator
cn.taketoday.web.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 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
另请参阅:
  • 字段详细资料

    • LOCALE_REQUEST_ATTRIBUTE_NAME

      public static final String LOCALE_REQUEST_ATTRIBUTE_NAME
      The name of the request attribute that holds the Locale.

      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 the TimeZone.

      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.

      另请参阅:
    • languageTagCompliant

      private boolean languageTagCompliant
    • rejectInvalidCookies

      private boolean rejectInvalidCookies
    • defaultLocale

      @Nullable private Locale defaultLocale
    • defaultTimeZone

      @Nullable private TimeZone defaultTimeZone
  • 构造器详细资料

  • 方法详细资料

    • 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 to false for rendering Java's legacy locale specification format. For parsing, this resolver leniently accepts the legacy Locale.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

      public void setDefaultLocale(@Nullable Locale defaultLocale)
      Set a fixed locale that this resolver will return if no cookie is found.
    • getDefaultLocale

      @Nullable protected Locale getDefaultLocale()
      Return the fixed locale that this resolver will return if no cookie found, if any.
    • setDefaultTimeZone

      public void setDefaultTimeZone(@Nullable TimeZone defaultTimeZone)
      Set a fixed time zone that this resolver will return if no cookie is found.
    • getDefaultTimeZone

      @Nullable protected TimeZone getDefaultTimeZone()
      Return the fixed time zone that this resolver will return if no cookie is found, if any.
    • resolveLocale

      public Locale resolveLocale(RequestContext 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 cn.taketoday.core.i18n.LocaleContext resolveLocaleContext(RequestContext request)
      从接口复制的说明: LocaleContextResolver
      Resolve the current locale context via the given request.

      This is primarily intended for framework-level processing; consider using RequestContextUtils or RequestContext 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 an instanceof 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
      另请参阅:
    • parseLocaleCookieIfNecessary

      private void parseLocaleCookieIfNecessary(RequestContext request)
    • setLocale

      public void setLocale(RequestContext request, @Nullable Locale locale)
      从接口复制的说明: LocaleResolver
      Set the current locale to the given one.
      指定者:
      setLocale 在接口中 LocaleResolver
      参数:
      request - the request to be used for locale modification
      locale - the new locale, or null to clear the locale
    • setLocaleContext

      public void setLocaleContext(RequestContext request, @Nullable cn.taketoday.core.i18n.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 modification
      localeContext - the new locale context, or null to clear the locale
      另请参阅:
    • parseLocaleValue

      @Nullable protected Locale parseLocaleValue(String localeValue)
      Parse the given locale value coming from an incoming cookie.

      The default implementation calls StringUtils.parseLocale(String), accepting the Locale.toString() format as well as BCP 47 language tags.

      参数:
      localeValue - the locale value to parse
      返回:
      the corresponding Locale instance
      另请参阅:
      • StringUtils.parseLocale(String)
    • toLocaleValue

      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's Locale.toLanguageTag(), depending on the "languageTagCompliant" configuration property.

      参数:
      locale - the locale to stringify
      返回:
      a String representation for the given locale
      另请参阅:
    • determineDefaultLocale

      protected Locale determineDefaultLocale(RequestContext 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)
      另请参阅:
    • determineDefaultTimeZone

      @Nullable protected TimeZone determineDefaultTimeZone(RequestContext 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)
      另请参阅: