2013-01-21 72 views
-1

我想要做我自己的ResourceBundle的實現。我想從數據庫中加載文本。 我被困住了。ResorceBundle來自Java中的地圖

如何從Map對象以編程方式創建ResourceBundle?地圖對象將具有基於區域設置的國際化文本。

感謝, Deibys

+0

製作[ListResourceBundle](http://docs.oracle.com/javase/tutorial/i18n/resbundle/list.html)。 –

回答

0

是否必須ResourceBundle特別? Spring爲各種實現提供了一個MessageSource抽象。標準實現由ResourceBundle支持,但還有其他替代方案,包括可以從地圖填充的StaticMessageSource,以及由數據庫支持的第三方實施such as this one

4

這是非常簡單的:

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(你已經初始化,當然後)。

+0

其實我想用:ResourceBundle.getBundle(BUNDLE_NAME,FacesContext.getCurrentInstance()。getViewRoot() \t \t .getLocale(),CONTROL)這將返回一個ResourceBundle,在CONTROL對象的newBundle方法中,我應該基於Map對象創建一個ResourceBundle – Deibys