これをコーディングしたところですが、うまくいくことを願っていますが、最適化する必要があります。メソッドを静的にするか、Bean にする必要がある場合は、基本クラスからベース名とロケールを取得します。
package mx.gob.jgtjo.apps.schedule.web.utils;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
public class CustomMessageResolver extends
ReloadableResourceBundleMessageSource {
public CustomMessageResolver() {
}
public Map<Object, Object> loadAllMessagesByLocale(String basename,
Locale locale) {
List<String> fileNames = super
.calculateAllFilenames(basename, locale);
Map<Object, Object> messagesByLocale = new HashMap<Object, Object>();
for (String fileName : fileNames) {
PropertiesHolder holder = super.getProperties(fileName);
for (Entry<Object, Object> entry : holder.getProperties()
.entrySet()) {
messagesByLocale.put(entry.getKey(), entry.getValue());
}
}
return messagesByLocale;
}
}
更新:指定されたベース名からすべてのプロパティを取得するより良い方法を見つけました:
public class CustomMessageResolver extends
ReloadableResourceBundleMessageSource {
public CustomMessageResolver() {
}
public Map<Object, Object> loadAllMessagesByLocale(String basename,
Locale locale) {
Map<Object, Object> messagesByLocale = new HashMap<Object, Object>();
PropertiesHolder holder = super.getMergedProperties(locale);
for (Entry<Object, Object> entry : holder.getProperties().entrySet()) {
messagesByLocale.put(entry.getKey(), entry.getValue());
}
return messagesByLocale;
}
}
これにより、基本クラスからベース名が取得されます。