
Concrete subclass of
MessageResources
that reads message keys
and corresponding strings from named property resources in a
similar manner
(see
modes below) that
java.util.PropertyResourceBundle
does. The
base
property defines the base property resource name, and
must be specified.
IMPLEMENTATION NOTE - This class
trades memory for speed by caching all messages located via generalizing
the Locale under the original locale as well. This results in specific
messages being stored in the message cache more than once, but improves
response time on subsequent requests for the same locale + key
combination.
Operating Modes
This implementation can be configured to operate in one of three modes:
- 1. Default - default, backwardly compatible, Struts behaviour (i.e. the way
its always worked).
- 2. JSTL - compatible with how JSTL finds messages
(fix for STR-2925)
- 3. Resource - compatible with how Java's
PropertyResourceBundle
finds messages (fix for
STR-2077)
1. Default Mode
Default mode is the way this implementation has always operated. It searches
for a message key for property resources in the following sequence:
base + "_" + localeLanguage + "_" + localeCountry + "_" + localeVariant
base + "_" + localeLanguage + "_" + localeCountry
base + "_" + localeLanguage
base + "_" + default locale
base
This mode is the default and requires no additional configuration.
2. JSTL Mode
JSTL mode is compatible with how JSTL operates and the default Locale
is not used when looking for a message key.
JSTL mode searches for
a message key for property resources in the following sequence:
base + "_" + localeLanguage + "_" + localeCountry + "_" + localeVariant
base + "_" + localeLanguage + "_" + localeCountry
base + "_" + localeLanguage
base
Configure PropertyMessageResources
to operate in this mode by
specifying a value of JSTL
for the mode
key in your struts-config.xml
:
<message-resources parameter="mypackage.MyMessageResources">
<set-property key="mode" value="JSTL"/>
</message-resources>
3. Resource Mode
Resource mode is compatible with how Java's
PropertyResourceBundle
operates.
Resource mode searches first through the specified Locale's language,
country and variant, then through the default Locale's language,
country and variant and finally using just the
base
:
base + "_" + localeLanguage + "_" + localeCountry + "_" + localeVariant
base + "_" + localeLanguage + "_" + localeCountry
base + "_" + localeLanguage
base + "_" + defaultLanguage + "_" + defaultCountry + "_" + defaultVariant
base + "_" + defaultLanguage + "_" + defaultCountry
base + "_" + defaultLanguage
base
Configure PropertyMessageResources
to operate in this mode by
specifying a value of resource
for the mode
key in your struts-config.xml
:
<message-resources parameter="mypackage.MyMessageResources">
<set-property key="mode" value="resource"/>
</message-resources>