测试空参数。性文件MessageFormat:
-
21-09-2019 - |
题
它是可能的,资源包和MessageFormat:具有以下结果呢?
- 当我打电话
getBundle("message.07", "test")
得到"Group test"
- 当我打电话
getBundle("message.07", null)
得到"No group selected"
每一例子,我在互联网上找到的与行星,用磁盘上的文件等等。
我只需要检查如果一个参数 null
(或者不存在)在资源包的性质的文件。我希望找到一种特殊格式的空参数喜欢的东西 {0,choice,null#No group selected|notnull#Group {0}}
.
该方法的使用获得包是:
public String getBundle(String key, Object... params) {
try {
String message = resourceBundle.getString(key);
if (params.length == 0) {
return message;
} else {
return MessageFormat.format(message, params);
}
} catch (Exception e) {
return "???";
}
}
我还呼吁该方法用于其他捆样
getBundle("message.08", 1, 2)
=>"Page 1 of 2"
(始终参数,没有必要检查null
)getBundle("message.09")
=>"Open file"
(没有参数,没有必要检查null
)
我应该怎么写我的。性文件 message.07
有结果所描述的?
什么我现在是:
message.07=Group {0}
message.08=Page {0} of {1} # message with parameters where I always send them
message.09=Open file # message without parameters
解决方案
你的 .properties
文件,
message.07=Group {0}
message.08=Page {0} of {1}
message.09=Open file
message.null = No group selected
然后你需要改变你的代码,把一个明确的检查 params
对于 null
.并且如果 null
然后你可以做的东西喜欢 resourceBundle.getString(NULL_MSG)
.哪里 NULL_MSG
将这一点,
private static final String NULL_MSG = "message.null";
所以,现在你原来的方法将会成为像这样的东西。
public String getBundle(String key, Object... params) {
String message = null;
try {
if (params == null) {
message = resourceBundle.getString(NULL_MSG);
} else {
message = MessageFormat.format(resourceBundle.getString(key), params);
}
} catch (Exception e) {
e.printStackTrace();
}
return message;
}
叫我的方法如下
getBundle("message.07", "test") // returning 'Group test'
getBundle("message.07", null) // returning 'No group selected'
getBundle("message.08", 1, 2) // returning 'Page 1 of 2'
getBundle("message.08", null) // returning 'No group selected'
getBundle("message.09", new Object[0]) // returning 'Open file'
getBundle("message.09", null) // returning 'No group selected'
现在告诉我问题出在哪里?
其他提示
我会建议不要试图改变束功能性(即使你有一个getBundle方法封)。
只是做在你的代码:
getBundle(param == null? "message.07.null": "message.07", param)
或让另一种方法:
getBundleOrNull("message.07", param, "message.07.null")
这并
public String getBundleOrNull(String key, value, nullKey) {
return getBundle(value == null? nullKey: key: value);
}
不隶属于 StackOverflow