public final class
LocaleContextHolder
extends
Object
Simple holder class that associates a LocaleContext instance
with the current thread. The LocaleContext will be inherited
by any child threads spawned by the current thread if the
inheritable
flag is set to
true
.
Used as a central holder for the current Locale in Spring,
wherever necessary: for example, in MessageSourceAccessor.
DispatcherServlet automatically exposes its current Locale here.
Other applications can expose theirs too, to make classes like
MessageSourceAccessor automatically use that Locale.
Since:
Author:
Juergen Hoeller, Nicholas Williams
See Also:
LocaleContext
MessageSourceAccessor
DispatcherServlet
Return the Locale associated with the current thread, if any,
or the system default Locale otherwise.
Return the Locale associated with the given user context, if any,
or the system default Locale otherwise.
Return the LocaleContext associated with the current thread, if any.
Return the TimeZone associated with the current thread, if any,
or the system default TimeZone otherwise.
Return the TimeZone associated with the given user context, if any,
or the system default TimeZone otherwise.
static void
Reset the LocaleContext for the current thread.
static void
Set a shared default locale at the framework level,
as an alternative to the JVM-wide default locale.
static void
Set a shared default time zone at the framework level,
as an alternative to the JVM-wide default time zone.
static void
Associate the given Locale with the current thread,
preserving any TimeZone that may have been set already.
static void
Associate the given Locale with the current thread,
preserving any TimeZone that may have been set already.
static void
Associate the given LocaleContext with the current thread,
not
exposing it as inheritable for child threads.
static void
Associate the given LocaleContext with the current thread.
static void
Associate the given TimeZone with the current thread,
preserving any Locale that may have been set already.
static void
Associate the given TimeZone with the current thread,
preserving any Locale that may have been set already.
setLocaleContext
Associate the given LocaleContext with the current thread,
not
exposing it as inheritable for child threads.
The given LocaleContext may be a
TimeZoneAwareLocaleContext
,
containing a locale with associated time zone information.
Parameters:
localeContext
- the current LocaleContext,
or
null
to reset the thread-bound context
See Also:
SimpleLocaleContext
SimpleTimeZoneAwareLocaleContext
setLocaleContext
Associate the given LocaleContext with the current thread.
The given LocaleContext may be a
TimeZoneAwareLocaleContext
,
containing a locale with associated time zone information.
Parameters:
localeContext
- the current LocaleContext,
or
null
to reset the thread-bound context
inheritable
- whether to expose the LocaleContext as inheritable
for child threads (using an
InheritableThreadLocal
)
See Also:
SimpleLocaleContext
SimpleTimeZoneAwareLocaleContext
Return the LocaleContext associated with the current thread, if any.
Returns:
the current LocaleContext, or
null
if none
Associate the given Locale with the current thread,
preserving any TimeZone that may have been set already.
Will implicitly create a LocaleContext for the given Locale,
not
exposing it as inheritable for child threads.
Parameters:
locale
- the current Locale, or
null
to reset
the locale part of thread-bound context
See Also:
setTimeZone(TimeZone)
SimpleLocaleContext(Locale)
boolean inheritable)
Associate the given Locale with the current thread,
preserving any TimeZone that may have been set already.
Will implicitly create a LocaleContext for the given Locale.
Parameters:
locale
- the current Locale, or
null
to reset
the locale part of thread-bound context
inheritable
- whether to expose the LocaleContext as inheritable
for child threads (using an
InheritableThreadLocal
)
See Also:
setTimeZone(TimeZone, boolean)
SimpleLocaleContext(Locale)
Set a shared default locale at the framework level,
as an alternative to the JVM-wide default locale.
NOTE:
This can be useful to set an application-level
default locale which differs from the JVM-wide default locale.
However, this requires each such application to operate against
locally deployed Spring Framework jars. Do not deploy Spring
as a shared library at the server level in such a scenario!
Parameters:
locale
- the default locale (or
null
for none,
letting lookups fall back to
Locale.getDefault()
)
Since:
4.3.5
See Also:
getLocale()
Locale.getDefault()
getLocale
public static
Locale
getLocale
()
Return the Locale associated with the current thread, if any,
or the system default Locale otherwise. This is effectively a
replacement for
Locale.getDefault()
,
able to optionally respect a user-level Locale setting.
Note: This method has a fallback to the shared default Locale,
either at the framework level or at the JVM-wide system level.
If you'd like to check for the raw LocaleContext content
(which may indicate no specific locale through
null
, use
getLocaleContext()
and call
LocaleContext.getLocale()
Returns:
the current Locale, or the system default Locale if no
specific Locale has been associated with the current thread
See Also:
getLocaleContext()
LocaleContext.getLocale()
setDefaultLocale(Locale)
Locale.getDefault()
Return the Locale associated with the given user context, if any,
or the system default Locale otherwise. This is effectively a
replacement for
Locale.getDefault()
,
able to optionally respect a user-level Locale setting.
Parameters:
localeContext
- the user-level locale context to check
Returns:
the current Locale, or the system default Locale if no
specific Locale has been associated with the current thread
Since:
See Also:
getLocale()
LocaleContext.getLocale()
setDefaultLocale(Locale)
Locale.getDefault()
Associate the given TimeZone with the current thread,
preserving any Locale that may have been set already.
Will implicitly create a LocaleContext for the given Locale,
not
exposing it as inheritable for child threads.
Parameters:
timeZone
- the current TimeZone, or
null
to reset
the time zone part of the thread-bound context
See Also:
setLocale(Locale)
SimpleTimeZoneAwareLocaleContext(Locale, TimeZone)
TimeZone
timeZone,
boolean inheritable)
Associate the given TimeZone with the current thread,
preserving any Locale that may have been set already.
Will implicitly create a LocaleContext for the given Locale.
Parameters:
timeZone
- the current TimeZone, or
null
to reset
the time zone part of the thread-bound context
inheritable
- whether to expose the LocaleContext as inheritable
for child threads (using an
InheritableThreadLocal
)
See Also:
setLocale(Locale, boolean)
SimpleTimeZoneAwareLocaleContext(Locale, TimeZone)
setDefaultTimeZone
Set a shared default time zone at the framework level,
as an alternative to the JVM-wide default time zone.
NOTE:
This can be useful to set an application-level
default time zone which differs from the JVM-wide default time zone.
However, this requires each such application to operate against
locally deployed Spring Framework jars. Do not deploy Spring
as a shared library at the server level in such a scenario!
Parameters:
timeZone
- the default time zone (or
null
for none,
letting lookups fall back to
TimeZone.getDefault()
)
Since:
4.3.5
See Also:
getTimeZone()
TimeZone.getDefault()
getTimeZone
Return the TimeZone associated with the current thread, if any,
or the system default TimeZone otherwise. This is effectively a
replacement for
TimeZone.getDefault()
,
able to optionally respect a user-level TimeZone setting.
Note: This method has a fallback to the shared default TimeZone,
either at the framework level or at the JVM-wide system level.
If you'd like to check for the raw LocaleContext content
(which may indicate no specific time zone through
null
), use
getLocaleContext()
and call
TimeZoneAwareLocaleContext.getTimeZone()
after downcasting to
TimeZoneAwareLocaleContext
.
Returns:
the current TimeZone, or the system default TimeZone if no
specific TimeZone has been associated with the current thread
See Also:
getLocaleContext()
TimeZoneAwareLocaleContext.getTimeZone()
setDefaultTimeZone(TimeZone)
TimeZone.getDefault()
getTimeZone
Return the TimeZone associated with the given user context, if any,
or the system default TimeZone otherwise. This is effectively a
replacement for
TimeZone.getDefault()
,
able to optionally respect a user-level TimeZone setting.
Parameters:
localeContext
- the user-level locale context to check
Returns:
the current TimeZone, or the system default TimeZone if no
specific TimeZone has been associated with the current thread
Since:
See Also:
getTimeZone()
TimeZoneAwareLocaleContext.getTimeZone()
setDefaultTimeZone(TimeZone)
TimeZone.getDefault()