Свойства конфигурации, использующие один и тот же ключ для создания массива / списка - PullRequest
8 голосов
/ 14 января 2011

Я хотел бы сохранить источник для полей выбора HTML в файле конфигурации. Они содержат длинные строки, которые не часто меняются (но иногда изменяются):

  • Lorem ipsum sit amet nr. 1
  • Lorem ipsum sit amet nr. 2
  • Lorem ipsum sit amet nr. 3
  • Lorem ipsum sit amet nr. 4 * +1010 *

Я уже использую commons-configuration. Можно ли хранить их, используя одни и те же ключи свойств в каком-либо объекте конфигурации (XMLConfiguration, HierarchicalConfiguration и т. Д.)? Я имею в виду, чтобы иметь возможность получить их за один раз, используя интерфейс, подобный getStringArray () (или список)? Пример:

// reject.reason = Lorem ipsum sit amet nr. 1
// reject.reason = Lorem ipsum sit amet nr. 2
// reject.reason = Lorem ipsum sit amet nr. 3
// reject.reason = Lorem ipsum sit amet nr. 4

config.getStringArray(reject.reason)

Я не хочу разделять их на одной строке, потому что, во-первых, причины длинные, а во-вторых, есть много причин (> 10).

Я тоже не хочу хранить их в перечислениях, т.к. невозможно изменить их без перекомпиляции кода.

Любые советы о том, как этого добиться?

Ответы [ 2 ]

13 голосов
/ 14 января 2011

Ваш пример выглядит хорошо для меня. Если вы указываете список значений с использованием одного и того же ключа, они обрабатываются как список, и должно работать следующее:

reject.reason = Lorem ipsum sit amet nr. 1
reject.reason = Lorem ipsum sit amet nr. 2
reject.reason = Lorem ipsum sit amet nr. 3
reject.reason = Lorem ipsum sit amet nr. 4

В вашем коде Java:

PropertiesConfiguration config = new PropertiesConfiguration("gui.properties");
String[] reasons = config.getStringArray("reject.reason");

http://commons.apache.org/configuration/userguide/howto_properties.html#Lists_and_arrays

4 голосов
/ 14 января 2011

Вы можете сохранить их в файле .properties и назвать как ...

key.0=line0  
key.1=line1  
key.2=line2

Затем в вашем коде перебирайте свойства с помощью цикла for, ищущего "key." + i, пока не получите нулевое значение.

Я делал это в прошлом, чтобы перечислять и настраивать ком-порты, и это хорошо работает.

...