我正在尝试自己实现 ResourceBundle。我想从数据库中加载文本。我被某事困住了。
如何从 Map 对象以编程方式创建 ResourceBundle ?地图对象将具有基于区域设置的国际化文本。
谢谢,戴比斯
我正在尝试自己实现 ResourceBundle。我想从数据库中加载文本。我被某事困住了。
如何从 Map 对象以编程方式创建 ResourceBundle ?地图对象将具有基于区域设置的国际化文本。
谢谢,戴比斯
这很简单:
public class MapResourceBundle extends ResourceBundle {
Map<String, Object> map;
public MapResourceBundle(Map<String, Object> map) {
this.map = map;
}
@Override
protected Object handleGetObject(String key) {
return map.get(key);
}
@Override
public Enumeration<String> getKeys() {
return Collections.enumeration(map.keySet());
}
}
在此之后,您可以使用MapResourceBundle
(当然,在您初始化之后)。
一定要ResourceBundle
具体吗?Spring 提供了MessageSource
具有各种实现的抽象。标准实现由 a 支持,ResourceBundle
但也有替代方案,包括StaticMessageSource
您可以从地图中填充的 a,以及由数据库支持的第三方实现,例如这个。