2008-09-15 9 views
4

Wenn ich eine Ressourcenbündel Eigenschaftendatei:Resource von Java/Struts und ersetzen Ausdrücke

A.properties: thekey = {0} Dies ist ein Test

Und dann habe ich Java-Code, Lasten das Ressourcenbündel:

ResourceBundle labels = 
    ResourceBundle.getBundle("A", currentLocale); 
labels.getString("thekey"); 

Wie kann ich die {0} Text mit einem Wert

labels.getString ("thekey", "Yes !!!") zu ersetzen;

so dass die Ausgabe kommt als:

Yes !!! Das ist ein Test.

Es gibt keine Methoden, die zu diesem Ressourcenpaket gehören. Auch, ich bin in Struts, gibt es eine Möglichkeit, MessageProperties zu verwenden, um die Ersetzung durchzuführen.

Antwort

11

Die Klasse, nach der Sie suchen, ist java.text.MessageFormat; Insbesondere wird

MessageFormat.format("{0} This {1} a test", "Yes!!!", "is"); 

MessageFormat.format("{0} This {1} a test", new Object[] {"Yes!!!", "is"}); 

oder

Aufruf Rückkehr

"Yes!!! This is a test" 

[Leider habe ich nicht mit dem Struts-Verbindung helfen können, obwohl this relevant aussieht.]

2

Es gibt die Klasse org.apache.struts.util.MessageResources mit verschiedenen Methoden getMessage, einige davon t ake Argumente zum Einfügen in die eigentliche Nachricht.

Eg .:

messageResources.getMessage("thekey", "Yes!!!");