配置属性使用相同的密钥创建数组/列表

时间:2011-01-14 12:01:17

标签: java arrays configuration properties

我想在配置文件中存储html选择框的源代码。这些包含一个冗长的字符串,不经常改变(但偶尔会改变):

  • Lorem ipsum坐在那儿。 1
  • Lorem ipsum坐在那儿。 2
  • Lorem ipsum坐在那儿。 3
  • Lorem ipsum坐在那儿。 4

我已经使用了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)。

我不想将它们存储在枚举中,b / c如果不重新编译代码就无法更改它们。

有关如何实现这一目标的任何提示?

2 个答案:

答案 0 :(得分:13)

你的例子对我来说很好。如果使用相同的键指定值列表,则将它们视为列表,并且以下内容应该起作用:

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

答案 1 :(得分:4)

您可以将它们存储在.properties文件中并命名为...

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

然后在你的代码中使用for循环遍历属性,查找"key." + i,直到你得到null。

我过去曾这样做过枚举和配置com端口,但效果很好。