org.springframework.web.servlet.i18n

## Class SessionLocaleResolver

- java.lang.Object
- - org.springframework.web.servlet.i18n.AbstractLocaleResolver
  - - org.springframework.web.servlet.i18n.SessionLocaleResolver

- All Implemented Interfaces:
    LocaleResolver

      public class SessionLocaleResolver
      extends AbstractLocaleResolver

  Implementation of LocaleResolver 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, that is, when the HttpSession does not have to be created for the locale.

  Custom controllers can override the user's locale by calling `setLocale`, e.g. responding to a locale change request.

  Since:
    27.02.2003
  Author:
    Juergen Hoeller
  See Also:
    `AbstractLocaleResolver.setDefaultLocale(java.util.Locale)`, `setLocale(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.Locale)`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `LOCALE_SESSION_ATTRIBUTE_NAME` Name of the session attribute that holds the locale.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SessionLocaleResolver()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Locale` | `determineDefaultLocale(HttpServletRequest request)` Determine the default locale for the given request, Called if no locale session attribute has been found.
    `Locale` | `resolveLocale(HttpServletRequest request)` Resolve the current locale via the given request.
    `void` | `setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)` Set the current locale to the given one.

    - ### Methods inherited from class org.springframework.web.servlet.i18n.AbstractLocaleResolver

      `getDefaultLocale, setDefaultLocale`

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

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

- - ### Field Detail

    - #### 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.
      See Also:
        `RequestContext.getLocale()`, `RequestContextUtils.getLocale(javax.servlet.http.HttpServletRequest)`

  - ### Constructor Detail

    - #### SessionLocaleResolver

          public SessionLocaleResolver()

  - ### Method Detail

    - #### resolveLocale

          public Locale resolveLocale(HttpServletRequest request)

      Description copied from interface: `LocaleResolver`
      Resolve the current locale via the given request. Should return a default locale as fallback in any case.
      Parameters:
        `request` - the request to resolve the locale for
      Returns:
        the current locale (never `null`)

    - #### 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.

      Parameters:
        `request` - the request to resolve the locale for
      Returns:
        the default locale (never `null`)
      See Also:
        `AbstractLocaleResolver.setDefaultLocale(java.util.Locale)`, `ServletRequest.getLocale()`

    - #### setLocale

          public void setLocale(HttpServletRequest request,
                       HttpServletResponse response,
                       Locale locale)

      Description copied from interface: `LocaleResolver`
      Set the current locale to the given one.
      Parameters:
        `request` - the request to be used for locale modification
        `response` - the response to be used for locale modification
        `locale` - the new locale, or `null` to clear the locale