org.springframework.web.servlet.i18n

## Class LocaleChangeInterceptor

- java.lang.Object
- - org.springframework.web.servlet.i18n.LocaleChangeInterceptor

- All Implemented Interfaces:
    HandlerInterceptor

      public class LocaleChangeInterceptor
      extends Object
      implements HandlerInterceptor

  Interceptor that allows for changing the current locale on every request, via a configurable request parameter (default parameter name: "locale").
  Since:
    20.06.2003
  Author:
    Juergen Hoeller, Rossen Stoyanchev
  See Also:
    `LocaleResolver`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DEFAULT_PARAM_NAME` Default name of the locale specification parameter: "locale".
    `protected Log` | `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocaleChangeInterceptor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `String[]` | `getHttpMethods()` Return the configured HTTP methods.
    `String` | `getParamName()` Return the name of the parameter that contains a locale specification in a locale change request.
    `boolean` | `isIgnoreInvalidLocale()` Return whether to ignore an invalid value for the locale parameter.
    `boolean` | `isLanguageTagCompliant()` Deprecated. as of 5.1 since it always returns `true` now
    `protected Locale` | `parseLocaleValue(String localeValue)` Parse the given locale value as coming from a request parameter.
    `boolean` | `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)` Interception point before the execution of a handler.
    `void` | `setHttpMethods(String... httpMethods)` Configure the HTTP method(s) over which the locale can be changed.
    `void` | `setIgnoreInvalidLocale(boolean ignoreInvalidLocale)` Set whether to ignore an invalid value for the locale parameter.
    `void` | `setLanguageTagCompliant(boolean languageTagCompliant)` Deprecated. as of 5.1 since it only accepts `true` now
    `void` | `setParamName(String paramName)` Set the name of the parameter that contains a locale specification in a locale change request.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.web.servlet.HandlerInterceptor

      `afterCompletion, postHandle`

- - ### Field Detail

    - #### DEFAULT_PARAM_NAME

          public static final String DEFAULT_PARAM_NAME

      Default name of the locale specification parameter: "locale".
      See Also:
        Constant Field Values

    - #### logger

          protected final Log logger

  - ### Constructor Detail

    - #### LocaleChangeInterceptor

          public LocaleChangeInterceptor()

  - ### Method Detail

    - #### setParamName

          public void setParamName(String paramName)

      Set the name of the parameter that contains a locale specification in a locale change request. Default is "locale".

    - #### getParamName

          public String getParamName()

      Return the name of the parameter that contains a locale specification in a locale change request.

    - #### setHttpMethods

          public void setHttpMethods(@Nullable
                                     String... httpMethods)

      Configure the HTTP method(s) over which the locale can be changed.
      Parameters:
        `httpMethods` - the methods
      Since:
        4.2

    - #### getHttpMethods

          @Nullable
          public String[] getHttpMethods()

      Return the configured HTTP methods.
      Since:
        4.2

    - #### setIgnoreInvalidLocale

          public void setIgnoreInvalidLocale(boolean ignoreInvalidLocale)

      Set whether to ignore an invalid value for the locale parameter.
      Since:
        4.2.2

    - #### isIgnoreInvalidLocale

          public boolean isIgnoreInvalidLocale()

      Return whether to ignore an invalid value for the locale parameter.
      Since:
        4.2.2

    - #### setLanguageTagCompliant

          @Deprecated
          public void setLanguageTagCompliant(boolean languageTagCompliant)

      Deprecated. as of 5.1 since it only accepts `true` now
      Specify whether to parse request parameter values as BCP 47 language tags instead of Java's legacy locale specification format.

      NOTE: As of 5.1, this resolver leniently accepts the legacy `Locale.toString()` format as well as BCP 47 language tags.

      Since:
        4.3
      See Also:
        `Locale.forLanguageTag(String)`, `Locale.toLanguageTag()`

    - #### isLanguageTagCompliant

          @Deprecated
          public boolean isLanguageTagCompliant()

      Deprecated. as of 5.1 since it always returns `true` now
      Return whether to use BCP 47 language tags instead of Java's legacy locale specification format.
      Since:
        4.3

    - #### preHandle

          public boolean preHandle(HttpServletRequest request,
                                   HttpServletResponse response,
                                   Object handler)
                            throws ServletException

      Description copied from interface: `HandlerInterceptor`
      Interception point before the execution of a handler. Called after HandlerMapping determined an appropriate handler object, but before HandlerAdapter invokes the handler.

      DispatcherServlet processes a handler in an execution chain, consisting of any number of interceptors, with the handler itself at the end. With this method, each interceptor can decide to abort the execution chain, typically sending an HTTP error or writing a custom response.

      Note: special considerations apply for asynchronous request processing. For more details see `AsyncHandlerInterceptor`.

      The default implementation returns `true`.

      Specified by:
        `preHandle` in interface `HandlerInterceptor`
      Parameters:
        `request` - current HTTP request
        `response` - current HTTP response
        `handler` - chosen handler to execute, for type and/or instance evaluation
      Returns:
        `true` if the execution chain should proceed with the next interceptor or the handler itself. Else, DispatcherServlet assumes that this interceptor has already dealt with the response itself.
      Throws:
        `ServletException`

    - #### parseLocaleValue

          @Nullable
          protected Locale parseLocaleValue(String localeValue)

      Parse the given locale value as coming from a request parameter.

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

      Parameters:
        `localeValue` - the locale value to parse
      Returns:
        the corresponding `Locale` instance
      Since:
        4.3