Как сохранить параметры конфигурации JSF2.0 для конкретного приложения в текстовом файле и сохранить в bean-компоненте с областью сеанса во время выполнения

Я искал в сети, но не смог найти решение для этого. Мне нужна помощь в том, как сохранить параметры конфигурации моего приложения в виде плоского текстового файла или файла xml. Есть ли пакет или класс Java, который предоставляет эту услугу?

Например, конфигурация для длины разбивки на страницы с данными и т. д. Поэтому мне не нужно перекомпилировать свое приложение всякий раз, когда мне нужно изменить параметры разбиения на страницы.

Что-то вроде этого: Возможно, файл myApp.cfg, который содержит это. пагинация: 10,20,30,50

И тогда в моем файле xhtml у меня будет что-то вроде этого.

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

И, возможно, даже получить доступ к параметру конфигурации из моего компонента поддержки сеанса или приложения. Затем повторно используйте их для нескольких пользователей.

Можно ли использовать файл свойств пакета ресурсов пользователя для хранения параметров конфигурации, таких как длина разбивки на страницы, и доступа к параметрам в вспомогательный компонент, подобный этому?

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

Я ищу что-то похожее на файл app.config в реализации dot net, который представляет собой XML.

Пожалуйста помоги. И если мой вопрос не имеет смысла, дайте мне знать. Большое спасибо.


person frazkok    schedule 05.03.2012    source источник
comment
Лучше всего вам будет создать объект области приложения для хранения этого значения и предоставить интерфейс администратора для управления им. Таким образом, вы можете избежать необходимости каждый раз читать файл свойств. Если вам все еще нужна конфигурация на основе файлов, вы можете создать файл свойств где-нибудь, либо в пути к классам, либо в домашнем каталоге пользователя, и прочитать его для необходимых значений.   -  person prajeesh kumar    schedule 05.03.2012
comment
Спасибо @prajeesh kumar, есть ли класс Java, который может легко повторять и читать каждый ключ конфигурации?   -  person frazkok    schedule 05.03.2012
comment
Создайте файл свойств, например <key=<value>, и загрузите его в Properties, например Properties props = new Properties(); InputStream in = this.getClass().getResourceAsStream("myapp.properties"); props.load(in);, а затем из него вы можете получить значение для ключа, например карту, например String rowsStr=props.get("paging_rows");.   -  person prajeesh kumar    schedule 05.03.2012


Ответы (1)


Вы можете использовать файл свойств (простой текстовый файл) с таким содержимым:

key1 = value1
key2 = value2

Например, назовите этот файл MyResources.properties и поместите его в корень исходного пути.

Затем вы можете получить доступ к файлу свойств с помощью ResourceBundle класс:

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

Вы можете получить доступ к этому файлу из любого bean-компонента с областью сеанса, который вам нравится. Если параметры не зависят от сеанса, вместо этого вы также можете использовать bean-компонент с областью действия приложения.

person Matt Handy    schedule 05.03.2012
comment
Я помещаю его в конструктор моего bean-компонента с областью применения и получаю исключение небезопасной операции. Есть идеи? - person frazkok; 05.03.2012
comment
Где именно выбрасывается исключение? - person Matt Handy; 05.03.2012
comment
Привет, @Matt Handy, неважно, я сделал ошибку. Я сделал это так: FacesContext fc = FacesContext.getCurrentInstance(); Пакет ResourceBundle = fc.getApplication().getResourceBundle(fc, appconfig); rowsPerPageTemplate = bundle.getString (шаблон rowsperpage); - person frazkok; 06.03.2012