2013-08-29 105 views
3

我有一個java maven項目。我已經在src/main/resources文件夾中放置了一個屬性文件。在servlet中加載屬性文件?

src/main/resources 
    | 
    |___properties 
     | 
     | 
     |___custom_en_US.properties 

我在servlet中加載屬性文件,如下所示。

ResourceBundle bundle = ResourceBundle.getBundle("classpath:properties/custom", request.getLocale()); 

但上面一行是拋出異常說沒有找到資源。我如何給屬性文件的路徑?請幫幫我。

謝謝!

回答

3

擺脫「類路徑」前綴:.getBundle("/properties/custom")

的「類路徑」前綴是不是一個標準,它是由像春天一些框架定義。

+0

感謝您的回覆,並且工作正常。但問題是我在proeprties文件中有20個關鍵值對。我希望它們以與它們在屬性文件中相同的順序加載。但是,當我在servlet中獲取它們時,它們的順序發生了變化。我怎樣才能得到鍵值對他們是如何在屬性文件相同的順序?謝謝! – user755806

+1

你不應該依賴它,因爲結構通常是一個哈希表,你不能擁有它。如果你想要它們,在它們前面添加一些東西(1_foo,2_bar),然後按順序排列。但通常順序不應該太重要 – Bozho

+0

我必須將它們放在html的選擇框中。所以我需要他們。請告訴我,如果有什麼我可以做的? – user755806

3

閱讀從classpath中

Properties prop = new Properties(); 

try { 
    //load a properties file from class path, inside static method 
    prop.load(App.class.getClassLoader().getResourceAsStream("config.properties"));    
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 
1

屬性文件自「的src/main /資源」存在於類路徑中,然後根據其定義的任何資源自動部署的根目錄下複製/ build目錄(例如,bin)。

爲了從java類訪問資源,在查找資源時使用前導斜槓'/'作爲前綴,路徑的其他部分取決於資源是否嵌套在子文件夾下。

爲了訪問「的src /主/資源/屬性/ custom_en_US.properties」,使用:

this.getClass().getResourceAsStream("/properties/custom_en_US.properties"); 

tutorial解釋了很好的在從classpath中讀取一個資源文件的可能途徑Java應用程序,值得一讀。