org.apache.jasper.JasperException: org.springframework.context.NoSuchMessageException: No message found under code 'zhiguFile.uri' for locale 'zh_CN'. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:548) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:469) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) javax.servlet.http.HttpServlet.service(HttpServlet.java:644) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
spring国际化时出现了上面错误信息。
sping配置文件application-config.xml如下
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<!-- 这就是出问题的地方 -->
<value>classpath:config/messages</value>
</list>
</property>
</bean>
配置的路劲的不对,导致国际化时找不到对应的信息。
项目结构如下
以上问题的处理的方式是只需要修改为如下
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>config/messages</value> </list> </property> </bean>
问题解决了。
在java代码中的使用方式为,这是一个验证
如果表单提交回来的字段uri为空,则会使用zhiguFile.uri在配置messages.properties文件中对应属性值作为错误信息展示。jsp代码如下:
<form:form action="/file/test" modelAttribute="zhiguFile"> <form:input path="uri" /> <form:errors path="uri" ></form:errors> <form:input path="spcs" /> <form:button value="submit" ></form:button> </form:form> 编译的html代码如下 <form id="zhiguFile" action="/file/test" method="post"> <input id="uri" name="uri" type="text" value=""/> <input id="spcs" name="spcs" type="text" value=""/> <button type="submit" value="submit"></button> </form> 表单验证出错编译后html代码如下 <form id="zhiguFile" method="post" action="/file/test"> <input id="uri" type="text" value="" name="uri"></input> <span id="uri.errors"> uri不能为空 </span> <input id="spcs" type="text" value="" name="spcs"></input> <button value="submit" type="submit"></button> </form> 由上可以看出 <form:errors path="uri" ></form:errors> 被编译成了 <span id="uri.errors"> uri不能为空 </span>
好了,spring国际化的问题解决了,就是属性文件不用classpath配置,而是写相对路径
小结:spring 的国际化分为4个步骤
1.编写messages.properties文件
2.在spring的配置文件中引入messages.properties文件
3.编写一个验证器去实现spring的validator接口
4.绑定验证器到控制器
推荐两篇比较好的博客
http://www.cnblogs.com/HD/p/4123146.html
http://haohaoxuexi.iteye.com/blog/1812584
相关推荐
NULL 博文链接:https://gaojiewyh.iteye.com/blog/1756655
spring国际化简单案例
spring国际化实例 下下来就能用 捐点分吧(就1分) 谢谢
Spring2.5的国际化配置 基于浏览器语言的国际化配置 使用Spring的MVC,并且配置中有配置Resource文件 <!-- 资源文件绑定器 --> <bean id="messageSource" class="org.springframework.context.support....
spring显示国际化信息!!!!这是一个完整的范例!!!!
采用spring技术 实现项目中英文切换 国际化
Spring实现国际化的一个小例子
封装Spring实现国际化 非常具有实战价值
spring 国际化的实例,想学习spring的同学,可以参考看看。
Spring MVC 国际化的配置方法及使用,希望能对大家的学习、工作有帮助。
spring2国际化的demo 用的是eclipse+myeclipse6.0GA 很简单 但是感觉不错 学习之后留着备用 里面加入用到了spring的泛型工厂 可以不用强制转换了
集成了springmvc的简单实例和spring国际化的demo
Spring国际化Demo
Spring国际化Demo.zip
spring boot mybatis mysql springmvc国际化 拦截器 创建聚合项目
Spring Boot 国际化(i18n)配置demo,该demo下载即可正常使用,本案例仅供学习参考。
Spring和其它的框架一样,也提供了国际化功能,它是通过MessageSource接口来实现的 ApplicationContext接口继承了MessageSource 。 MessageSource接口方法
自己整理的sping boot国际化,切换中英文页面,切换时,将当前语言类型保存到session中,保证跳转页面时,语言类型沿用上个页面的语言类型
关于spring国际化的详细例子,很经典,一看便会!
阅读本文之前,你应该了解过SpringBoot的国际化实现与原理,在这里简单介绍下: 1. 国际化 国际化(internationalization),又称为i18n(因为这个单词从i到n有18个英文字母,因此命名)。对于某些应用系统而言,它...