rav*_*rab 4 java resourcebundle internationalization number-formatting
我有一个 Web 服务实现,它验证请求并在响应中写入错误消息。响应的格式不符合要求。
错误消息模板位于资源包属性文件中。
...
key=Plant name {0} Plant Id {1}.
...
Run Code Online (Sandbox Code Playgroud)
这是我在验证后收到的错误消息。
Plant name PLANT1 Plant Id 9,905,005.
Run Code Online (Sandbox Code Playgroud)
但所需的输出没有数字变量的逗号。
Plant name WPLANT Plant Id 9905005.
Run Code Online (Sandbox Code Playgroud)
这是我的代码。
...
key=Plant name {0} Plant Id {1}.
...
Run Code Online (Sandbox Code Playgroud)
我使用以下键和变量调用此方法。
Plant name PLANT1 Plant Id 9,905,005.
Run Code Online (Sandbox Code Playgroud)
如何更改此代码以获得所需的输出?我更喜欢不包含 %s, %d 的方法,因为这样我就失去了更改属性文件中错误消息中变量顺序的能力。
小智 5
您可以使用子格式模式。例子:
MessageFormat formatter = new MessageFormat("{0} {1,number,###0}");
Run Code Online (Sandbox Code Playgroud)
所以代码会是这样的:
private String getErrorMessage(String messageKey, Object... args) {
ResourceBundle messages = ResourceBundle.getBundle("ErrorMessageResourceBundle");
MessageFormat formatter = new MessageFormat("{0} {1,number,###0}");
formatter.applyPattern(messages.getString(messageKey));
String output = formatter.format(args);
return output;
}
Run Code Online (Sandbox Code Playgroud)
请在此处阅读 Oracle 关于 SubFormatPattern 的文档: http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html#patterns
| 归档时间: |
|
| 查看次数: |
4792 次 |
| 最近记录: |