22

这个问题中,它指出,可能有类似的东西:

message.myMessage = This message is for {0} in {1}

但我不知道如何将参数传递给它

MESSAGES.getString("message.myMessage", "foor", "bar")

但不幸的是 getString 不知道带其他参数有什么想法吗?

4

3 回答 3

32

我猜你在想MessageFormat?如果是这样,那就是这样的:

String s = MessageFormat.format("This message is for {0} in {1}", "foo", "bar");

或从属性:

Properties p = new Properties();
p.setProperty("messages.myMessage", "This message is for {0} in {1}");
String s = MessageFormat.format(
    p.getProperty("messages.myMessage"), "foo", "bar");
于 2013-03-24T23:53:42.987 回答
12

试试这个:

String message = "This message is for {0} in {1}.";
String result = MessageFormat.format(message, "me", "the next morning");
System.out.println(result);

( java.text.MessageFormat;)

或者在 JSF 中:

<h:outputFormat value="This message is for {0} in {1}.">
    <f:param value="me">
    <f:param value="the next morning">
</h:outputFormat>
于 2013-03-24T23:53:06.330 回答
0

您可以使用字符串数组。

String[] params = new String[2]; 
params[0] = "This is your text including parameters";
params[1] = "This is your second text including parameters";

如果您使用的是 JSF,请以这种方式从您的支持 bean 将 Array 作为警告文本传递给文本:

JsfUtil.addWarn("A_MSG_TITLE_IN_PROPERTIES_FILE", params);

并将这一行插入到您的本地属性文件中:

A_MSG_TITLE_IN_PROPERTIES_FILE = Hello {0} and {1} 

所以,输出将是:

您好,这是您的包含参数的文本,这是您的第二个包含参数的文本

于 2022-02-04T06:48:28.783 回答