2011-01-14 7 views
8

Ich möchte die Quelle für HTML-Auswahlfelder in einer Konfigurationsdatei speichern. Diese enthalten lange Zeichenketten, die sich nicht oft ändern (aber gelegentlich ändern):Konfigurationseigenschaften mit dem gleichen Schlüssel zum Erstellen eines Arrays/Liste

  • Lorem ipsum sit amet nr. 1
  • Lorem ipsum sit amet nr. 2
  • Lorem ipsum sit amet nr. 3
  • Lorem ipsum sit amet nr. 4

Ich verwende bereits Commons-Konfiguration. Ist es möglich, sie mit den gleichen Eigenschaftenschlüsseln in einer Art Konfigurationsobjekt zu speichern (XMLC-Konfiguration, HierarchicalConfiguration usw.)? Ich meine, in der Lage sein, sie in einem Rutsch mit Hilfe von Schnittstelle ähnlich wie getStringArray() (oder Liste) abrufen? Beispiel:

// 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) 

Ich will sie nicht auf der gleichen Linie getrennt zu halten, weil erstens die Gründe lang sind, und zweitens, es gibt viele Gründe dafür sind (> 10).

Ich möchte sie auch nicht in Enums speichern, b/c es wird unmöglich sein, sie zu ändern, ohne den Code neu zu kompilieren.

Irgendwelche Hinweise, wie Sie dies erreichen können?

Antwort

13

Ihr Beispiel sieht gut aus für mich. Wenn Sie eine Liste von Werten mit dem gleichen Schlüssel angeben, werden sie als Liste behandelt, und die folgenden sollte funktionieren:

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 

In Java-Code:

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

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

+0

Großartig, danke, Dogbane! Weißt du, ob commons-configuration irgendeine Unterstützung für UTF-8-codierte Ressourcenbündel hat? –

4

Sie könnten speichern sie in einer .properties-Datei und den Namen als ...

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

Dann im Code durchlaufen Eigenschaften mit einer for-Schleife für "key." + i suchen, bis Sie eine Null zurück.

Ich habe dies in der Vergangenheit zum Auflisten und Konfigurieren von COM-Ports getan und es funktioniert gut.

+0

Das ist, was Ich habe geschrieben :) Sie könnten sogar das Standard-Konfigurationsobjekt in Ihren eigenen Wrapper einpacken, der dies für Sie erledigt. – extraneon

+0

Richtig, das war auch mein erster Gedanke. Ich kann einfach nicht glauben, dass es für diesen Anwendungsfall keine fertige Lösung gibt. Außerdem habe ich das Gefühl, dass es bereits von commons-configuration bereitgestellt wird und ich kann keine klare Information darüber finden, wie ich es bekommen kann. Ich versuche es einfach mit meinem Bauch und werde einfach das oben erwähnte jetzt benutzen. –

Verwandte Themen