您的位置:首页 > 编程语言 > Java开发

Spring MVC完成指南(三)国际化的支持

2009-03-17 12:51 501 查看
继上一篇完成hibernate的集成后,接下来就是国际化的支持,查阅spring的文章以后,准备了一下 look,要让spring支持中文就需要用native2ascii做中文的转义。

转义方法如下:

native2ascii -encoding gb2312 messages_zh.txt > messages_zh.properties

英文的就不需要转义了。

然后有改变的代码我会帖出来。

这个项目图样



将所有的国际化的东东全放在Src的根目录下。

messages_en.properties

main.title=Hello World!

title=SpringMVC

username=username

password=password

password2=password2

submit=submit

welcome=welcome

loginSuccess=loginSuccess

usernameerror=usernameerror

passworderror=passworderror

doublepassword=doublepassworderror


messages_zh.properties

title=SpringMVC/u5B9E/u4F8B

username=/u8F93/u5165/u7528/u6237/u540D/:

password=/u8F93/u5165/u5BC6/u7801/:

password2=/u786E/u8BA4/u5BC6/u7801/:

submit=/u63D0/u4EA4

welcome=/u6B22/u8FCE

loginSuccess=/u6CE8/u518C/u6210/u529F

usernameerror=/u7528/u6237/u540D/u4E0D/u6B63/u786E

passworderror=/u5BC6/u7801/u4E0D/u6B63/u786E

doublepassword=2/u6B21/u5BC6/u7801/u4E0D/u4E00/u81F4


这个是转义后的东东。

转义前的

messages_zh.txt

title=SpringMVC实例

username=输入用户名:

password=输入密码:

password2=确认密码:

submit=提交

welcome=欢迎

loginSuccess=注册成功

usernameerror=用户名不正确

passworderror=密码不正确

doublepassword=2次密码不一致


zh.bat

native2ascii -encoding gb2312  messages_zh.txt > messages_zh.properties


国际化需要的文件都已经准备完成,剩下来就是添加显示标签和加载了。

我将加载的信息放错了文件了,放到了dispatcherServlet.xml......

当我调用spring的显示标签的时候,直接报错.... ...under code............ 一堆错误信息。

我查阅相关资料后,发现在初始化的时候dispatcherServlet.xml 只会在servlet做出响应,这个时候加载信息应该加入到ApplicationContext.xml

加载信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> 
<bean id="factory"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="xfworld"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="factory" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>

<property name="annotatedClasses">
<list>
<value>cn.Person</value></list>
</property>
</bean>

<bean id="PersonDAO" class="cn.PersonDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<!-- 配置transactionManager, 注意这里引入的包的不同  -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

<!-- lazy-init="true" abstract="true" 拦截器的属性  -->
<bean id="transactionInterceptor"  class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>

<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

<!-- 只对以Dao结尾的bean作事务处理 -->
<bean  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass" >
<value>true</value>
</property>
<property name="beanNames">
<value>*Dao</value>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>

<!-- 定义国际化消息 -->

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>
<!-- 获取本地 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>

</beans>


然后,index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="spring" uri="WEB-INF/spring.tld"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title><spring:message code="title"/></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->
</head>

<body>
<spring:message code="welcome"/>
<form action="/my/action.do" name="User" method="post">
<spring:message code="username"/><input type="text" name="name">
<input type="submit" value="<spring:message code="submit"/>">
</form>
</body>
</html>


接着就是test.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="spring" uri="/WEB-INF/spring.tld"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title><spring:message code="title"/></title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css">
-->

</head>

<body>
<spring:message code="welcome"/>
<spring:message code="username"/>${user.name}
</body>
</html>


以上完成后,就可以正常的调用spring国际化的东东了。

呵呵,需要注意的是 jsp中都包含了<%@ taglib prefix="spring" uri="/WEB-INF/spring.tld"%> 这个标签。

路径可以进行统一,不过也没啥必要。

如果有什么问题欢迎和我探讨。

接着还有其他功能的整合........未完待续............ ^_^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: