2011-03-30 119 views
3

我希望能夠在消息包密鑰中包含空格,因爲如果不必將空格轉換爲下劃線,則可以更輕鬆地將現有文本轉換爲密鑰。消息包密鑰中的空格

春天的消息源似乎並不喜歡這個。可能嗎?

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) 

回答

12

如果您通過的.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". 
+0

那不是好玩!我可以將我的捆綁包存儲在任何其他屬性文件中嗎? – mkoryak 2011-03-30 20:04:19

+0

查看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

1

爲別人誰擁有這個問題,這裏是一個小哈克常規我寫來修復空間:

@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; 
    } 
相關問題