用Spring ResourceBundle时,抛了异常:
org.springframework.context.NoSuchMessageException: No message found under code 'userlogin' for locale 'zh_CN'.
at org.springframework.context.support.DelegatingMessageSource.getMessage(DelegatingMessageSource.java:65)
at org.springframework.context.support.AbstractApplicationContext.getMessage(AbstractApplicationContext.java:646)
经过网搜,清一色的转帖解决方案:
其实,上面的解决方案纯属瞎扯淡:
1.资源文件放在哪里,鬼才管你,爱放哪里放哪里,只要用时找的到;
2.资源文件命名规则的本质是:(你的资源文件可以是任意你喜欢的,比如msgResource)
2.1 msgResource.properties 找不到对应的Locale时;
2.2 msgResource_zh_CN.properties Locale为中文时;
2.3 msgResource_en_US.propertise Locale为英文时;
。。。支持其它语言请自行网搜,否则,就采用默认的msgResource.properties;
3.Spring Bean的id爱起啥名起啥名,鬼才管你。
那上面所说的异常到底是如何引起的呢?很简单,加载的资源文件位置不对。
下面是一个正确的样例(抛砖引玉,相信您看到懂):
在msg目录下的资源文件有: yyTips.properties、yyTips_zh_CN.properties、yyTips_en_US.properties,可以根据需要加载其它语言支持
classpath:msg/yyTips classpath:msg/ipTips
顺便提及一下,get时出现中文乱码时,应当如何解决?
最快、最直接的方法是用PropertiesEditor编辑属性文件,并将属性文件设置为ISO-8859-1编码,以便确保有效的将中文转为Unicode编码。
附PropertiesEditor地址:http://propedit.sourceforge.jp/eclipse/updates/,至于eclipse安装该插件的方法,请自行网搜,很简单的。