public class LocaleChangeInterceptor extends HandlerInterceptorAdapter
LocaleResolver
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_PARAM_NAME
Default name of the locale specification parameter: "locale".
|
private java.lang.String[] |
httpMethods |
private boolean |
ignoreInvalidLocale |
private boolean |
languageTagCompliant |
protected Log |
logger |
private java.lang.String |
paramName |
Constructor and Description |
---|
LocaleChangeInterceptor() |
Modifier and Type | Method and Description |
---|---|
private boolean |
checkHttpMethod(java.lang.String currentMethod) |
java.lang.String[] |
getHttpMethods()
Return the configured HTTP methods.
|
java.lang.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 java.util.Locale |
parseLocaleValue(java.lang.String locale)
Parse the given locale value as coming from a request parameter.
|
boolean |
preHandle(HttpServletRequest request,
HttpServletResponse response,
java.lang.Object handler)
This implementation always returns
true . |
void |
setHttpMethods(java.lang.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(java.lang.String paramName)
Set the name of the parameter that contains a locale specification
in a locale change request.
|
afterCompletion, afterConcurrentHandlingStarted, postHandle
public static final java.lang.String DEFAULT_PARAM_NAME
protected final Log logger
private java.lang.String paramName
private java.lang.String[] httpMethods
private boolean ignoreInvalidLocale
private boolean languageTagCompliant
public void setParamName(java.lang.String paramName)
public java.lang.String getParamName()
public void setHttpMethods(java.lang.String... httpMethods)
httpMethods
- the methodspublic java.lang.String[] getHttpMethods()
public void setIgnoreInvalidLocale(boolean ignoreInvalidLocale)
public boolean isIgnoreInvalidLocale()
public void setLanguageTagCompliant(boolean languageTagCompliant)
false
.
Note: This mode requires JDK 7 or higher. Set this flag to true
for BCP 47 compliance on JDK 7+ only.
Locale.forLanguageTag(String)
,
Locale.toLanguageTag()
public boolean isLanguageTagCompliant()
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, java.lang.Object handler) throws ServletException
HandlerInterceptorAdapter
true
.preHandle
in interface HandlerInterceptor
preHandle
in class HandlerInterceptorAdapter
request
- current HTTP requestresponse
- current HTTP responsehandler
- chosen handler to execute, for type and/or instance evaluationtrue
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.ServletException
private boolean checkHttpMethod(java.lang.String currentMethod)
protected java.util.Locale parseLocaleValue(java.lang.String locale)
The default implementation calls StringUtils.parseLocaleString(String)
or JDK 7's Locale.forLanguageTag(String)
, depending on the
"languageTagCompliant"
configuration property.
locale
- the locale value to parseLocale
instance