来自Java/Struts的ResourceBundle和替换表达式

Ber*_*own 4 java struts resourcebundle java-ee

如果我有一个资源包属性文件:

A.properties:

thekey={0} This is a test
Run Code Online (Sandbox Code Playgroud)

然后我有加载资源包的java代码:

ResourceBundle labels = ResourceBundle.getBundle("A", currentLocale);
labels.getString("thekey");
Run Code Online (Sandbox Code Playgroud)

如何用某个值替换{0}文本

labels.getString("thekey", "Yes!!!");
Run Code Online (Sandbox Code Playgroud)

输出如下:

Yes!!! This is a test.
Run Code Online (Sandbox Code Playgroud)

没有方法是Resource Bundle的一部分来执行此操作.另外,我在Struts中,有没有办法使用MessageProperties来进行替换.

小智 11

您正在寻找的类是java.text.MessageFormat; 打电话

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

要么

MessageFormat.format("{0} This {1} a test", "Yes!!!", "is");
Run Code Online (Sandbox Code Playgroud)

将返回

"Yes!!! This is a test"
Run Code Online (Sandbox Code Playgroud)

[不幸的是,我无法帮助Struts连接,虽然看起来很相关.]