在class路径下创建两个properties文件
my_en_GB.properties(英式英语)
my_zh_CN.properties(中文)
在spring.xml中 注册国际化
<!-- ID名固定 messageSource -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- 读取 /cn/et/springmvc/lesson04/resource/my 的properties文件-->
<property name="basename" value="/cn/et/springmvc/lesson04/resource/my"></property>
</bean>
在springmvc.xml中配置
<!-- 该拦截器用于拦截url上的参数 -->
<mvc:interceptors>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="a"></property> //value=a 代表页面上带上的参数
</bean>
</mvc:interceptors>
会跳到一个中转的页面 此页面跳转到原页面
@RequestMapping(value="/mid",method=RequestMethod.GET)
public String mid() throws Exception{
return "/lesson04/reg.jsp";
}
<!-- 参数需要被临时存储在某个地方 当用户再次访问 使用之前设置的参数
只是当jsp经过action之后才会将当前的国家和语言存储在session中 同时从session中获取 a=zh_CN
-->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
点击显示中文时 此次会话都显示中文验证国际化在springmvc.xml中配置
<!-- 自定义验证器 手动注入国际化 -->
<bean id="localValidatorFactoryBean" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="validationMessageSource" ref="messageSource"></property>
</bean>
<!-- 启用注解驱动 -->
<mvc:annotation-driven validator="localValidatorFactoryBean">
提交验证的中转
@RequestMapping(value="/myreg",method=RequestMethod.POST)
public String mid(@ModelAttribute("userInfo") @Valid UserInfo user,BindingResult result) throws Exception{
//出现错误
if(result.hasErrors()){
return "/lesson04/reg.jsp";
}
//通过返回空白页面
return null;
}
页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%
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>My JSP 'reg.jsp' starting page</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">
-->
</head>
<script type="text/javascript">
function checkSubmit(){
/*var userName=document.getElementsByName("userName")[0].value;
if(userName==null||userName==""){
alert("用户名不能为空");
return;
}
var password=document.getElementsByName("password")[0].value;
var repassword=document.getElementsByName("repassword")[0].value;
if(password!=repassword){
alert("两次输入密码不一致");
return;
}*/
document.forms[0].submit();
}
</script>
<a href="${pageContext.request.contextPath}/mid?a=zh_CN">中文</a><a href="${pageContext.request.contextPath}/mid?a=en_GB">英文</a>
<body>
<form action="${pageContext.request.contextPath}/myreg" method="post">
<s:message code="userName"></s:message>:<input type="text" name="userName"><font color=red><form:errors path="userInfo.userName"></form:errors></font><br/>
<s:message code="passWord"></s:message>:<input type="password" name="password"><font color=red><form:errors path="userInfo.password"></form:errors></font><br/>
<s:message code="ConfirmPassword"></s:message>:<input type="password" name="repassword"><font color=red><form:errors path="userInfo.repassword"></form:errors></font><br/>
<s:message code="mailbox"></s:message>:<input type="text" name="email"><font color=red><form:errors path="userInfo.email"></form:errors></font><br/>
<s:message code="age"></s:message>:<input type="text" name="age"><font color=red><form:errors path="userInfo.age"></form:errors></font><br/>
<s:message code="phone"></s:message>:<input type="text" name="phone"><font color=red><form:errors path="userInfo.phone"></form:errors></font><br/>
<s:message code="website"></s:message>:<input type="text" name="website"><font color=red><form:errors path="userInfo.website"></form:errors></font><br/>
<s:message code="birth"></s:message>:<input type="text" name="date"/><font color=red><form:errors path="userInfo.date"></form:errors></font><br/>
<input type="button" οnclick="checkSubmit()" value="<s:message code="refer"></s:message>">
</form>
</body>
</html>
浏览器效果
当点击英文时
当点击中文时