Wie gebe ich Werte in einer Eigenschaftendatei an, damit sie mit ResourceBundle # getStringArray abgerufen werden können?
Ich versuche, mit ResourceBundle#getStringArray
zum abrufen einer String[]
aus einer properties-Datei. Die Beschreibung dieser Methode in der die Dokumentation liest:
Bekommt ein string-array für einen bestimmten Schlüssel von dieser Ressource-bundle oder eine von seinen Eltern.
Allerdings habe ich versucht, die Werte in der properties-Datei als mehrere einzelne Schlüssel/Wert-Paare:
key=value1
key=value2
key=value3
und als Komma-separierte Liste:
key=value1,value2,value3
aber weder diese ist abrufbar über ResourceBundle#getStringArray
.
Wie Sie repräsentieren eine Ansammlung von Schlüssel/Wert-Paaren in einem properties-Datei, so dass Sie abgerufen werden können, mit ResourceBundle#getStringArray
?
InformationsquelleAutor der Frage Grant Wagner | 2008-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
Properties
Objekt halten kannObject
s, nicht nurString
s. Das neigt dazu, vergessen zu werden, weil Sie überwiegend zum laden .properties-Dateien, und so oft wird nur dieString
s. Die Dokumentation zeigt an, dass der Aufrufbundle.getStringArray(key)
ist gleichbedeutend mit dem Aufruf(String[]) bundle.getObject(key)
. Das ist das problem: der Wert ist nicht eineString[]
, es ist einString
.Ich würde vorschlagen, es zu speichern in comma-delimited-format und Aufruf von
split()
auf den Wert.InformationsquelleAutor der Antwort Robert J. Walker
Können Sie Commons Configuration, die die Methoden
getList
undgetStringArray
, mit denen Sie zum abrufen einer Liste von durch Komma getrennten strings.InformationsquelleAutor der Antwort João Silva
Umm, sieht aus wie dies ist ein häufiges problem, von threads hier und hier.
Scheint es entweder, die Sie nicht verwenden und der Methode parse wird der Wert für ein array mit sich selbst oder schreiben Sie Ihre eigenen ResourceBundle Implementierung und tun Sie es selbst :(. Vielleicht gibt es ja ein apache-commons-Projekt für diese...
Vom JDK source code, es scheint, das PropertyResourceBundle nicht unterstützt.
InformationsquelleAutor der Antwort Chris Kimpton
Beispiel:
..
..
InformationsquelleAutor der Antwort Murlo
Ich glaube nicht, dass dies möglich ist, mit ResourceBundles geladen, aus einer properties-Datei. Das PropertyResourceBundle nutzt die Eigenschaften der Klasse zum laden der properties-Datei. Die Eigenschaften der Klasse lädt eine properties-Datei als eine Reihe von String->String map-Einträge und unterstützt nicht herausziehen String[] Werte.
Aufruf Von ResourceBundle.getStringArray nur Anrufe ResourceBundle.getObject, Gießen das Ergebnis in ein String[]. Da das PropertyResourceBundle eben Hand dies ab, um die Eigenschaften der Instanz, die es aus der Datei geladenen, werden Sie nie in der Lage, diese arbeiten mit den aktuellen, Börse, PropertyResourceBundle.
InformationsquelleAutor der Antwort Alan Krueger
nur nutzen spring, Frühling .Eigenschaften Datei: get element als Array
relevante code:
InformationsquelleAutor der Antwort chrismarx
InformationsquelleAutor der Antwort Sujith
InformationsquelleAutor der Antwort
Ich habe dies ausprobiert und einen Weg finden könnte.
Eine Möglichkeit ist die Definition einer ListresourceBundle-Unterklasse, dann definieren Sie die Instanz-variable vom Typ String[]
und weisen Sie den Wert zu dem Schlüssel.. hier ist der code
InformationsquelleAutor der Antwort Lokesh Garg