Class LocaleChangeInterceptor
- java.lang.Object
- org.springframework.web.servlet.handler.HandlerInterceptorAdapter
- org.springframework.web.servlet.i18n.LocaleChangeInterceptor
- All Implemented Interfaces:
AsyncHandlerInterceptor
,HandlerInterceptor
public class LocaleChangeInterceptor extends HandlerInterceptorAdapter
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 Description static String
DEFAULT_PARAM_NAME
Default name of the locale specification parameter: "locale".protected Log
logger
Constructor Summary
Constructors Constructor Description LocaleChangeInterceptor()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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()
Return whether to use BCP 47 language tags instead of Java's legacy locale specification format.protected Locale
parseLocaleValue(String locale)
Parse the given locale value as coming from a request parameter.boolean
preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
This implementation always returnstrue
.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)
Specify whether to parse request parameter values as BCP 47 language tags instead of Java's legacy locale specification format.void
setParamName(String paramName)
Set the name of the parameter that contains a locale specification in a locale change request.Methods inherited from class org.springframework.web.servlet.handler.HandlerInterceptorAdapter
afterCompletion, afterConcurrentHandlingStarted, 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
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(String... httpMethods)
Configure the HTTP method(s) over which the locale can be changed.- Parameters:
httpMethods
- the methods- Since:
- 4.2
getHttpMethods
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
public void setLanguageTagCompliant(boolean languageTagCompliant)
Specify whether to parse request parameter values as BCP 47 language tags instead of Java's legacy locale specification format. The default isfalse
.Note: This mode requires JDK 7 or higher. Set this flag to
true
for BCP 47 compliance on JDK 7+ only.- Since:
- 4.3
- See Also:
Locale.forLanguageTag(String)
,Locale.toLanguageTag()
isLanguageTagCompliant
public boolean isLanguageTagCompliant()
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 class:HandlerInterceptorAdapter
This implementation always returnstrue
.- Specified by:
preHandle
in interfaceHandlerInterceptor
- Overrides:
preHandle
in classHandlerInterceptorAdapter
- Parameters:
request
- current HTTP requestresponse
- current HTTP responsehandler
- 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
@UsesJava7 protected Locale parseLocaleValue(String locale)
Parse the given locale value as coming from a request parameter.The default implementation calls
StringUtils.parseLocaleString(String)
or JDK 7'sLocale.forLanguageTag(String)
, depending on the"languageTagCompliant"
configuration property.- Parameters:
locale
- the locale value to parse- Returns:
- the corresponding
Locale
instance - Since:
- 4.3