Add defaultLocale to AcceptHeaderLocaleResolver

Issue: SPR-14312
This commit is contained in:
Rossen Stoyanchev
2016-05-31 13:55:11 -04:00
parent e2fa282e14
commit 8343ce9e44
2 changed files with 37 additions and 0 deletions

View File

@@ -42,6 +42,8 @@ public class AcceptHeaderLocaleResolver implements LocaleResolver {
private final List<Locale> supportedLocales = new ArrayList<Locale>();
private Locale defaultLocale;
/**
* Configure supported locales to check against the requested locales
@@ -65,9 +67,32 @@ public class AcceptHeaderLocaleResolver implements LocaleResolver {
return this.supportedLocales;
}
/**
* Configure a fixed default locale to fall back on if the request does not
* have an "Accept-Language" header.
* <p>By default this is not set in which case when there is "Accept-Lanaguage"
* header, the default locale for the server is used as defined in
* {@link HttpServletRequest#getLocale()}.
* @param defaultLocale the default locale to use
* @since 4.3
*/
public void setDefaultLocale(Locale defaultLocale) {
this.defaultLocale = defaultLocale;
}
/**
* The configured default locale.
*/
public Locale getDefaultLocale() {
return this.defaultLocale;
}
@Override
public Locale resolveLocale(HttpServletRequest request) {
if (getDefaultLocale() != null && request.getHeader("Accept-Language") == null) {
return getDefaultLocale();
}
Locale locale = request.getLocale();
if (!isSupportedLocale(locale)) {
locale = findSupportedLocale(request, locale);