【问题标题】:Configuration properties using the same key to create an array / list配置属性使用相同的键创建数组/列表
【发布时间】:2011-06-09 02:46:15
【问题描述】:

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

  • Lo​​rem ipsum sat amet nr. 1
  • Lo​​rem ipsum sat amet nr. 2
  • Lo​​rem ipsum sat amet nr. 3
  • Lo​​rem ipsum sat amet nr. 4

我已经使用公共配置。是否可以在某种配置对象(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 如果不重新编译代码就不可能更改它们。

关于如何实现这一点的任何提示?

【问题讨论】:

    标签: java arrays configuration properties


    【解决方案1】:

    你的例子对我来说很好。如果您使用相同的键指定值的列表,它们将被视为一个列表,以下应该可以工作:

    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

    【讨论】:

    • 太棒了,谢谢你!您是否知道 commons-configuration 是否对 UTF-8 编码的资源包有一些支持?
    【解决方案2】:

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

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

    然后在您的代码中使用 for 循环遍历属性以查找 "key." + i,直到您得到一个空值。

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

    【讨论】:

    • 对,这也是我的第一个想法。我简直不敢相信这个用例没有现成的解决方案。此外,我觉得它已经由 commons-configuration 提供,我只是找不到有关如何获取它的明确信息。我会尝试一下我的直觉,现在就使用上面提到的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多