I had a guy ask me why his internationalized properties were not accessible
in his Struts app that was using both the REST and Convention plug-ins. My
first action was to read the docs which did not suggest anything out of the
ordinary, so I through a core app together using this configuration and sure
enough the properties were not found!
He is using
<constant name="struts.convention.action.suffix" value="Controller"/>
So I figured an Action called FooController would find
FooController.properties in the same folder as the FooController.class,
which as it turns out did *not* work. I set a breakpoint at the top of
LocalizedTextUtil and the localist contains only the following two files
[org/apache/struts2/struts-messages,
com/opensymphony/xwork2/xwork-messages]. Shouldn't this collection include
my FooController.properties on a request http://.../foo? Including a
message key from struts-messages works fine, however a key from
FooController.properties returns the key itself as it is not being located.
public static String findDefaultText(String aTextName, Locale locale) {
List<String> localList = DEFAULT_RESOURCE_BUNDLES;
for (String bundleName : localList) {
ResourceBundle bundle = findResourceBundle(bundleName, locale);
if (bundle != null) {
reloadBundles();
try {
return bundle.getString(aTextName);
} catch (MissingResourceException e) {
// ignore and try others
}
}
}
return null;
}