Search code examples
javajakarta-eestrutsresourcebundle

ResourceBundle from Java/Struts and replace expressions


If I have a Resource bundle property file:

A.properties:

thekey={0} This is a test

And then I have java code that loads the resource bundle:

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

How can I replace the {0} text with some value

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

Such that the output comes out as:

Yes!!! This is a test.

There are no methods that are part of Resource Bundle to do this. Also, I am in Struts, is there some way to use MessageProperties to do the replacement.


Solution

  • The class you're looking for is java.text.MessageFormat; specifically, calling

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

    or

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

    will return

    "Yes!!! This is a test"
    

    [Unfortunately, I can't help with the Struts connection, although this looks relevant.]