Spring Framework

org.springframework.web.servlet.i18n
Class SessionLocaleResolver

java.lang.Object
  extended by org.springframework.web.servlet.i18n.AbstractLocaleResolver
      extended by 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
static java.lang.String LOCALE_SESSION_ATTRIBUTE_NAME
          Name of the session attribute that holds the locale.
 
Constructor Summary
SessionLocaleResolver()
           
 
Method Summary
protected  java.util.Locale determineDefaultLocale(javax.servlet.http.HttpServletRequest request)
          Determine the default locale for the given request, Called if no locale session attribute has been found.
 java.util.Locale resolveLocale(javax.servlet.http.HttpServletRequest request)
          Resolve the current locale via the given request.
 void setLocale(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.util.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 java.lang.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 java.util.Locale resolveLocale(javax.servlet.http.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 java.util.Locale determineDefaultLocale(javax.servlet.http.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(javax.servlet.http.HttpServletRequest request,
                      javax.servlet.http.HttpServletResponse response,
                      java.util.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

Spring Framework