[Note]Spring MVC、hibernate validator和i18n(二)

来源:互联网 发布:搜索引擎开发python 编辑:程序博客网 时间:2024/05/29 09:24

承接上节,本节将对Spring中的i18n的一个实例进行讲解。首先还是把项目的目录结构展示一下:
SpringMVCBasic
    META-INF
    styles
    WEB-INF
        classes
        lib
        messages
        spring
        views
        urlrewrite.xml
        web.xml

 

 

上一节提到,用户的请求“/”会被Spring mvc导向到名字为welcome的view,然后views目录下的welcome.jsp就会被解析,下面是该文件的内容:

关于该文件要说明的几点有:

<!--[if lt IE 8]>
  <link rel="stylesheet" href="<c:url value="/styles/blueprint/ie.css" />" type="text/css" media="screen, projection">
<![endif]-->
是指当客户端的浏览器版本低于IE8时就使用ie.css中定义的样式。

${pageContext.response.locale}显示了当前用户使用的locale

fmt:message和<a href="?locale=zh_cn">zh</a>等配合使用,就能使fmt:message要显示的内容根据Local改变。上一节提到过,这个功能是Spring的org.springframework.web.servlet.i18n.LocaleChangeInterceptor实现的。fmt:message可以显示绑定的资源文件中的内容,上节提到,/WEB-INF/messages目录下的messages*.properties文件被绑定。在本项目的,/WEB-INF/messages下有多个messages*.properties文件,根据文件的后缀名(如_zh,_en,_de等)分别对应不同的Locale,如果文件后缀名与当前的Locale没有匹配的,就默认使用messages.properties文件,先将messages.properties和messages_zh.properties文件的内容展示如下:

messages.properties

message_zh.properties

注意,由于我的开发环境是没有安装中文语言包的ubuntu9.10,所以输入的中文都被转换为了UTF-8码,并且在web.xml文件中也对UTF-8进行了强制性的设置。

其他local对应的messages.properties文件就不再列出。

fmt:message标签中的key值指定为messages.properties文件中各等式左边的值,那么fmt:message就能根据不同的Locale显示相应的等号左边的值。

 

welcome.jsp文件中的<a href="account"><fmt:message key="view.title"/></a>链接会向服务器发送"/account"请求,该请求会被一个自定义的控制器接收处理,下一节将对该控制器进行说明。