org.springframework.web.servlet.i18n
Class CookieLocaleResolver

java.lang.Object
  extended by org.springframework.web.util.CookieGenerator
      extended by org.springframework.web.servlet.i18n.CookieLocaleResolver
All Implemented Interfaces:
LocaleResolver

public class CookieLocaleResolver
extends CookieGenerator
implements LocaleResolver

LocaleResolver implementation that uses a cookie sent back to the user in case of a custom setting, with a fallback to the specified default locale or the request's accept-header locale.

This is particularly useful for stateless applications without user sessions.

Custom controllers can thus override the user's locale by calling setLocale(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.Locale), for example responding to a certain locale change request.

Since:
27.02.2003
Author:
Juergen Hoeller, Jean-Pierre Pawlak
See Also:
setDefaultLocale(java.util.Locale), setLocale(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.util.Locale)

Field Summary
static String DEFAULT_COOKIE_NAME
          The default cookie name used if none is explicitly set.
static String LOCALE_REQUEST_ATTRIBUTE_NAME
          The name of the request attribute that holds the locale.
 
Fields inherited from class org.springframework.web.util.CookieGenerator
DEFAULT_COOKIE_MAX_AGE, DEFAULT_COOKIE_PATH, logger
 
Constructor Summary
CookieLocaleResolver()
          Creates a new instance of the CookieLocaleResolver class using the default cookie name.
 
Method Summary
protected  Locale determineDefaultLocale(HttpServletRequest request)
          Determine the default locale for the given request, Called if no locale cookie has been found.
protected  Locale getDefaultLocale()
          Return the fixed Locale that this resolver will return if no cookie found, if any.
 Locale resolveLocale(HttpServletRequest request)
          Resolve the current locale via the given request.
 void setDefaultLocale(Locale defaultLocale)
          Set a fixed Locale that this resolver will return if no cookie found.
 void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale)
          Set the current locale to the given one.
 
Methods inherited from class org.springframework.web.util.CookieGenerator
addCookie, createCookie, getCookieDomain, getCookieMaxAge, getCookieName, getCookiePath, isCookieSecure, removeCookie, setCookieDomain, setCookieMaxAge, setCookieName, setCookiePath, setCookieSecure
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

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.getLocale() to retrieve the current locale in controllers or views.

See Also:
RequestContext.getLocale()

DEFAULT_COOKIE_NAME

public static final String DEFAULT_COOKIE_NAME
The default cookie name used if none is explicitly set.

Constructor Detail

CookieLocaleResolver

public CookieLocaleResolver()
Creates a new instance of the CookieLocaleResolver class using the default cookie name.

Method Detail

setDefaultLocale

public void setDefaultLocale(Locale defaultLocale)
Set a fixed Locale that this resolver will return if no cookie found.


getDefaultLocale

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


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.

Specified by:
resolveLocale in interface LocaleResolver
Parameters:
request - the request to resolve the locale for
Returns:
the current locale (never null)

setLocale

public void setLocale(HttpServletRequest request,
                      HttpServletResponse response,
                      Locale locale)
Description copied from interface: LocaleResolver
Set the current locale to the given one.

Specified by:
setLocale in interface LocaleResolver
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

determineDefaultLocale

protected Locale determineDefaultLocale(HttpServletRequest 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.

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