Java / Struts中的ResourceBundle并替换表达式

时间:2020-03-05 18:54:48  来源:igfitidea点击:

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

A.属性:
thekey = {0},这是一个测试

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

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

如何用一些值替换{0}文本

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

这样输出结果如下:

是的!!!这是一个测试。

资源捆绑包中没有任何方法可以执行此操作。另外,我在Struts中,是否可以使用MessageProperties进行替换。

解决方案

回答

我们要查找的类是java.text.MessageFormat;具体来说,

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

或者

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

将返回

"Yes!!! This is a test"

[不幸的是,尽管看起来很相关,但我对Struts连接还是无能为力。]

回答

有一个带有各种方法getMessage的org.apache.struts.util.MessageResources类,其中一些方法将参数插入到实际消息中。

例如。:

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