2012-03-05 53 views
0

我一直在搜索網絡,但找不到解決方案。我需要關於如何將特定於應用程序的配置參數存儲到平面文本文件或xml文件中的幫助。有沒有提供此服務的Java包或類?如何將特定於應用程序的JSF2.0配置參數存儲在文本文件中並在運行時存儲到會話作用域中的Bean

對於數據表分頁長度等配置。因此,我不必重新編譯我的應用程序,每當我需要更改分頁參數。

類似這樣的:也許myApp.cfg文件包含這個。 分頁:10,20,30,50

然後在我的xhtml文件中,我會有這樣的事情。

<p:dataTable id="dtClientList" value="#{saClientController.lazyModel}" rowsPerPageTemplate="#{myApp.cfg.pagination}"> 

甚至可能從我的會話範圍或應用程序範圍的支持bean中訪問配置參數。然後將它們重用於多個用戶。

是否可以通過用戶資源包屬性文件來存儲配置參數(如分頁長度)並像這樣訪問參數到後臺bean中?

FacesContext fc = FacesContext.getCurrentInstance(); 
    ResourceBundle bundle = fc.getApplication().getResourceBundle(fc,"bundle_name"); 
    bundle.getString("resource_identifier"); 

林尋找類似的app.config文件中的點網實現這是XML的東西。

請幫助。如果我的問題沒有意義,請告訴我。非常感謝。

+0

要做的最好的事情就是創建一個應用程序範圍對象來存儲這個值並提供一個管理界面來操作它。這樣可以避免每次讀取屬性文件。如果你仍然需要一個基於文件的配置,你可以在classpath或user home的某個地方創建一個屬性文件,然後閱讀它以獲得所需的值 – 2012-03-05 08:26:42

+0

感謝@prajeesh kumar,是否有一個java類可以迭代和讀取每個配置鍵很容易? – frazkok 2012-03-05 08:40:59

+0

創建像''這樣的屬性文件並將其加載到'Properties'中,像這樣'Properties props = new Properties(); InputStream in = this.getClass()。getResourceAsStream(「myapp.properties」); ';然後從它你可以得到像鍵值一樣的地圖像'String rowsStr = props.get(「paging_rows」);' – 2012-03-05 09:01:56

回答

1

您可以使用內容的屬性文件(簡單的文本文件),像這樣:

key1 = value1 
key2 = value2 

名稱此文件的情況下MyResources.properties並把它放在你的源路徑根。

然後你可以用ResourceBundle類訪問屬性文件:

import java.util.ResourceBundle; 
... 
ResourceBundle rb = ResourceBundle.getBundle("MyResources"); 
String myValue1 = rb.getString("key1"); 

您可以從任何會話文件作用域你喜歡吃蠶豆。如果參數與會話無關,則也可以使用應用程序範圍的bean。

+0

我把它放到我的applicationscoped bean的構造函數中並且拋出不安全的操作異常。任何想法? – frazkok 2012-03-05 09:46:51

+0

拋出的異常究竟在哪裏? – 2012-03-05 12:02:53

+0

嗨@Matt Handy,沒關係我犯了一個錯誤。我做了這樣的FacesContext fc = FacesContext.getCurrentInstance(); ResourceBundle bundle = fc.getApplication()。getResourceBundle(fc,「appconfig」); rowsPerPageTemplate = bundle.getString( 「rowsperpagetemplate」); – frazkok 2012-03-06 03:59:56

相關問題