我正在尝试自己实现 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,以及由数据库支持的第三方实现,例如这个。