`

无聊的传递水桶:Spring国际化时报NoSuchMessageException

 
阅读更多

用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.如果你使用eclipse创建的工程是class和src分开的,那么资源属性文件一定要放在src目录以内。
2.属性文件名的写法:
messages_zh_CN.properties (中文)
messages_en_US.properties (英文)
3.配置messageSource这个bean(注意:一定是messageSource不是messageResource ,这是Spring规定的)
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>
注意以上问题,就OK了。

 其实,上面的解决方案纯属瞎扯淡:
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爱起啥名起啥名,鬼才管你。

那上面所说的异常到底是如何引起的呢?很简单,加载的资源文件位置不对。

下面是一个正确的样例(抛砖引玉,相信您看到懂):

<bean id="msgResource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
         <property name="basenames">
             <list>
			 <value>classpath:msg/yyTips</value>
			 <value>classpath:msg/ipTips</value>
	    </list>
         </property>
         <property name="cacheSeconds" value="-1"/>
    </bean>
    
    在msg目录下的资源文件有:
    yyTips.properties、yyTips_zh_CN.properties、yyTips_en_US.properties,可以根据需要加载其它语言支持

 

    顺便提及一下,get时出现中文乱码时,应当如何解决?
    最快、最直接的方法是用PropertiesEditor编辑属性文件,并将属性文件设置为ISO-8859-1编码,以便确保有效的将中文转为Unicode编码。
   
    附PropertiesEditor地址:http://propedit.sourceforge.jp/eclipse/updates/,至于eclipse安装该插件的方法,请自行网搜,很简单的。

1
3
分享到:
评论
3 楼 redsnow_fenglin 2016-11-03  
3.Spring Bean的id爱起啥名起啥名,鬼才管你。

解释下这句话对大家造成的误解:

1)“鬼才管你”,产生于当时环境的背景下,是针对无聊传递水桶中提到的bean命名上有要求而言的,故“鬼才管你”;

2)“鬼要管你”,这个是规范的问题,耳熟能详的是“命名要望文生义”“遵循约定便沟通维护”“约定优于配置”...,故“鬼要管你”;
2 楼 yyg329405 2012-11-06  
1.如果你使用eclipse创建的工程是class和src分开的,那么资源属性文件一定要放在src目录以内。

这句话,解决了!
1 楼 atgfss 2012-10-29  
引用

3.Spring Bean的id爱起啥名起啥名,鬼才管你。

Spring 的官方文档中这样写的:

When an ApplicationContext is loaded, it automatically searches for a MessageSource bean defined in the context. The bean must have the name messageSource. If such a bean is found, all calls to the preceding methods are delegated to the message source. If no message source is found, the ApplicationContext attempts to find a parent containing a bean with the same name. If it does, it uses that bean as the MessageSource. If the ApplicationContext cannot find any source for messages, an empty DelegatingMessageSource is instantiated in order to be able to accept calls to the methods defined above.

相关推荐

    水桶分水算法

    1. **初始化**:首先,我们需要设定一定数量的空水桶,每个水桶都有一个固定的容量,代表可以接收的资源量。水桶的数量和容量可以根据实际需求进行调整。 2. **资源获取**:假设我们有一个水源,可以不断地提供资源...

    三维数字化技术综合应用:水桶建模.pdf

    三维数字化技术是现代计算机图形学中的重要组成部分,它在游戏开发、影视特效、产品设计、建筑可视化等多个领域都有着广泛的应用。本篇文档聚焦于一种特定的建模方法——水桶建模,这是一种允许设计师深入细化模型...

    自动化水桶提手组装机3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip

    该压缩包文件“自动化水桶提手组装机3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip”包含了关于自动化水桶提手组装机的详尽设计资料,是机械工程领域的一个典型实例,特别适合于学习、...

    自动化水桶提手组装机sw16可编辑.rar

    标题中的“自动化水桶提手组装机sw16可编辑.rar”表明这是一份关于自动化设备设计的资料,特别是一款用于水桶提手组装的机器。这个机器可能采用了先进的自动化技术,提高了生产效率和精度,减少了人工操作的繁琐和...

    自动化水桶提手组装机sw16可编辑设计图纸.7z

    标题中的“自动化水桶提手组装机sw16可编辑设计图纸.7z”表明这是一个与机械自动化设计相关的文件,具体来说是关于水桶提手组装的机器设计。该文件可能包含一系列的设计图、工程图、3D模型、CAD文件等,用于指导制造...

    递归法实现水桶取水问题

    就是经典的有两个已知容量的水桶量取指定体积水的算法实现。

    三个水桶等分8升水的问题(Python)

    它要求使用三个容量不同的水桶,通过倒水操作将一定量的水等分成三份。在这个案例中,目标是将8升水等分为三份,每份2.666...升。这个问题的关键在于找到合适的水桶组合和倒水策略。下面我们将详细讨论如何用Python...

    专题资料(2021-2022年)[励志]你的水桶有多满:工作与生活的积极策略.doc

    《你的水桶有多满:工作与生活的积极策略》一书深入探讨了如何通过积极情感的培养来提升我们的生活质量和工作效率,其核心思想是建立在“水桶”和“勺子”这一生动的比喻之上。在这一框架下,作者汤姆·拉思为我们...

    3dmax (车削)水桶

    3dmax (车削)水桶

    工作与生活的积极策略《你的水桶有多满》.pptx

    为了保持水桶的充盈,我们需要使用手中的“勺子”去为他人加水,传递积极和正能量,同时也需要注意到,我们在不经意间也可能会从他人的水桶中舀水,无意中传播消极和负面影响。 书中通过一系列生动的例子和深刻的...

    小班玩沙游戏:给水桶喂“沙”.doc

    【小班玩沙游戏:给水桶喂“沙”】是一项专为幼儿园小班设计的户外活动,旨在激发孩子们的探索精神,提升他们的动手能力和团队合作意识,同时增强对玩沙活动的乐趣。以下是对这个游戏的详细说明和相关知识点: 1. *...

    minecraft水桶服务端

    minecraft 水桶服 欢迎大家下载

    行业文档-设计装置-新式写生水桶.zip

    新式写生水桶设计装置是艺术创作领域中一个创新性的工具,主要服务于美术爱好者和专业画家进行户外写生。这个设计旨在提供一种更便捷、功能更全面的水桶,以适应不同环境和绘画需求。从提供的信息来看,"新式写生...

    我的世界1.5.1水桶服务器懒人包

    《我的世界1.5.1水桶服务器懒人包》是一个专门为我的世界爱好者们准备的游戏服务器资源包。这个包的独特之处在于它基于1.5.1版本,这是我的世界历史中的一个经典版本,包含了众多玩家熟悉和喜爱的游戏元素。值得注意...

    自动化水桶提手组装机_三维3D设计图纸.zip

    自动化水桶提手组装机_三维3D设计图纸.zip

    ssh(structs,spring,hibernate)框架中的上传下载

     以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。  工程...

    洗衣机的改造设计,机电一体化

    【洗衣机的改造设计,机电一体化】这一主题涉及的是如何运用机电一体化技术改进传统洗衣机的设计,以满足现代消费者对于高效、节能、低噪音和智能化的更高需求。机电一体化是指机械工程与电子信息技术的融合,它在...

    电子-一种水桶电子标签的安装方法

    4. **初始化标签**:安装后,通过读写器对标签进行初始化操作,录入水桶的相关信息,如编号、容量、生产日期等。 5. **测试通信**:最后,使用读写器测试标签的读写功能,确保其正常工作。 三、相关知识点 1. **...

    水桶注塑模具设计说明.doc

    水桶注塑模具设计说明.doc

    自动化水桶提手组装机sw16可编辑_零件图_机械工程图_机械三维3D设计图打包下载.zip

    该压缩包文件“自动化水桶提手组装机sw16可编辑_零件图_机械工程图_机械三维3D设计图打包下载.zip”是针对一个特定的机械设备——自动化水桶提手组装机的详细设计资料集。这个机器主要用于提高生产效率,通过自动化...

Global site tag (gtag.js) - Google Analytics