Resource von Java / Struts und Ausdrücke ersetzen
-
09-06-2019 - |
Frage
Wenn ich eine Ressourcenbündel Eigenschaftendatei:
A.properties:
thekey={0} This is a test
Und dann habe ich Java-Code, den das Ressourcenbündel geladen:
ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
Wie kann ich ersetzen Sie die {0} Text mit einem Wert
labels.getString("thekey", "Yes!!!");
so dass die Ausgabe kommt als:
Yes!!! This is a test.
Es gibt keine Methoden, den Teil des Ressourcenbündels ist, dies zu tun. Außerdem bin ich in Struts, ist es eine Möglichkeit, MessageProperties zu verwenden, um den Austausch zu tun.
Lösung
Die Klasse Sie suchen ist java.text.MessageFormat; Insbesondere Aufruf
MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"});
oder
MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
wird wieder
"Yes!!! This is a test"
[Leider kann ich nicht mit der Struts-Verbindung helfen, obwohl diesem sieht relevant.]
Andere Tipps
Es ist die Klasse org.apache .struts.util.MessageResources mit verschiedenen Methoden getMessage, Argumente einige von ihnen ergreifen, um die eigentlichen Nachricht einzufügen.
Zum Beispiel:.
messageResources.getMessage("thekey", "Yes!!!");