消息包密钥中的空格
问题描述:
我希望能够在消息包密钥中包含空格,因为如果不必将空格转换为下划线,则可以更轻松地将现有文本转换为密钥。消息包密钥中的空格
春天的消息源似乎并不喜欢这个。可能吗?
2011-03-30 15:45:56,519 ERROR [org.springframework.web.servlet.tags.MessageTag] - No message found under code 'Invalid username or password' for locale 'en_US'.
javax.servlet.jsp.JspTagException: No message found under code 'Invalid username or password' for locale 'en_US'.
at org.springframework.web.servlet.tags.MessageTag.doStartTagInternal(MessageTag.java:183)
答
如果您通过的.properties资源包存储您的邮件,请确保您的键位前添加反斜杠。
Invalid\ username\ or\ password=Invalid username or password
见的属性文件的例子在*:
http://en.wikipedia.org/wiki/.properties
# Add spaces to the key
key\ with\ spaces = This is the value that could be looked up with the key "key with spaces".
答
为别人谁拥有这个问题,这里是一个小哈克常规我写来修复空间:
@Test
void fixMessageBundle(){
def path = "/path/to/it/messages_en_US.properties";
String fixed = "";
Map keys = [:]
new File(path).eachLine { String it->
String line = "";
if(it.contains("=")){
String key = it.split("=")[0];
String val = it.split("=")[1];
if(keys.containsKey(key)){
println "removed duplicate key: ${key}. kept val: [${keys[key]}], threw out val: [${val}]"
return
}
keys.put(key, val);
line = key.replaceAll(/([^\\]) /, "\$1\\\\ ") + "=" + val;
}
fixed += line+"\n";
}
new File(path).text = fixed;
}
那不是好玩!我可以将我的捆绑包存储在任何其他属性文件中吗? – mkoryak 2011-03-30 20:04:19
查看http://download.oracle.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,%20java.util.Locale,%20java.lang.ClassLoader ,%20java.util.ResourceBundle.Control%29。它解释了如何加载资源包以及如何定义其他格式。 – 2011-03-30 20:16:06