Configurable locale/timezone attribute name for SessionLocaleResolver
Issue: SPR-15450
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2015 the original author or authors.
|
* Copyright 2002-2017 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -79,9 +79,35 @@ public class SessionLocaleResolver extends AbstractLocaleContextResolver {
|
|||||||
public static final String TIME_ZONE_SESSION_ATTRIBUTE_NAME = SessionLocaleResolver.class.getName() + ".TIME_ZONE";
|
public static final String TIME_ZONE_SESSION_ATTRIBUTE_NAME = SessionLocaleResolver.class.getName() + ".TIME_ZONE";
|
||||||
|
|
||||||
|
|
||||||
|
private String localeAttributeName = LOCALE_SESSION_ATTRIBUTE_NAME;
|
||||||
|
|
||||||
|
private String timeZoneAttributeName = TIME_ZONE_SESSION_ATTRIBUTE_NAME;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the name of the corresponding attribute in the {@code HttpSession},
|
||||||
|
* holding the current {@link Locale} value.
|
||||||
|
* <p>The default is an internal {@link #LOCALE_SESSION_ATTRIBUTE_NAME}.
|
||||||
|
* @since 4.3.8
|
||||||
|
*/
|
||||||
|
public void setLocaleAttributeName(String localeAttributeName) {
|
||||||
|
this.localeAttributeName = localeAttributeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify the name of the corresponding attribute in the {@code HttpSession},
|
||||||
|
* holding the current {@link TimeZone} value.
|
||||||
|
* <p>The default is an internal {@link #TIME_ZONE_SESSION_ATTRIBUTE_NAME}.
|
||||||
|
* @since 4.3.8
|
||||||
|
*/
|
||||||
|
public void setTimeZoneAttributeName(String timeZoneAttributeName) {
|
||||||
|
this.timeZoneAttributeName = timeZoneAttributeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Locale resolveLocale(HttpServletRequest request) {
|
public Locale resolveLocale(HttpServletRequest request) {
|
||||||
Locale locale = (Locale) WebUtils.getSessionAttribute(request, LOCALE_SESSION_ATTRIBUTE_NAME);
|
Locale locale = (Locale) WebUtils.getSessionAttribute(request, this.localeAttributeName);
|
||||||
if (locale == null) {
|
if (locale == null) {
|
||||||
locale = determineDefaultLocale(request);
|
locale = determineDefaultLocale(request);
|
||||||
}
|
}
|
||||||
@@ -93,7 +119,7 @@ public class SessionLocaleResolver extends AbstractLocaleContextResolver {
|
|||||||
return new TimeZoneAwareLocaleContext() {
|
return new TimeZoneAwareLocaleContext() {
|
||||||
@Override
|
@Override
|
||||||
public Locale getLocale() {
|
public Locale getLocale() {
|
||||||
Locale locale = (Locale) WebUtils.getSessionAttribute(request, LOCALE_SESSION_ATTRIBUTE_NAME);
|
Locale locale = (Locale) WebUtils.getSessionAttribute(request, localeAttributeName);
|
||||||
if (locale == null) {
|
if (locale == null) {
|
||||||
locale = determineDefaultLocale(request);
|
locale = determineDefaultLocale(request);
|
||||||
}
|
}
|
||||||
@@ -101,7 +127,7 @@ public class SessionLocaleResolver extends AbstractLocaleContextResolver {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public TimeZone getTimeZone() {
|
public TimeZone getTimeZone() {
|
||||||
TimeZone timeZone = (TimeZone) WebUtils.getSessionAttribute(request, TIME_ZONE_SESSION_ATTRIBUTE_NAME);
|
TimeZone timeZone = (TimeZone) WebUtils.getSessionAttribute(request, timeZoneAttributeName);
|
||||||
if (timeZone == null) {
|
if (timeZone == null) {
|
||||||
timeZone = determineDefaultTimeZone(request);
|
timeZone = determineDefaultTimeZone(request);
|
||||||
}
|
}
|
||||||
@@ -120,8 +146,8 @@ public class SessionLocaleResolver extends AbstractLocaleContextResolver {
|
|||||||
timeZone = ((TimeZoneAwareLocaleContext) localeContext).getTimeZone();
|
timeZone = ((TimeZoneAwareLocaleContext) localeContext).getTimeZone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WebUtils.setSessionAttribute(request, LOCALE_SESSION_ATTRIBUTE_NAME, locale);
|
WebUtils.setSessionAttribute(request, this.localeAttributeName, locale);
|
||||||
WebUtils.setSessionAttribute(request, TIME_ZONE_SESSION_ATTRIBUTE_NAME, timeZone);
|
WebUtils.setSessionAttribute(request, this.timeZoneAttributeName, timeZone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user