图示:
首先写三份不同国家语言的 properties 文档
message_en_GB.properties 文档
title=Registration page
username=Username
password=Password
rePassword=Repeat password
prompt=You have successfully registered
message_zh_CN.properties 文档
title=\u6CE8\u518C\u9875\u9762
username=\u7528\u6237\u540D
password=\u5BC6\u7801
rePassword=\u91CD\u590D\u5BC6\u7801
prompt=\u60A8\u5DF2\u7ECF\u6210\u529F\u6CE8\u518C
message_zh_HK.properties 文档
title=\u6CE8\u518A\u9801\u9762
username=\u7528\u6236\u540D
password=\u5BC6\u78BC
rePassword=\u91CD\u8907\u5BC6\u78BC
prompt=\u4F60\u5DF2\u7D93\u6210\u529F\u6CE8\u518A
User 实体类
package entity;
public class User {
//用户名
private String username;
//用户密码
private String password;
//再输一次密码
private String rePassword;
/*
* 构造方法
* */
public User() {
}
public User(String username, String password, String rePassword) {
this.username = username;
this.password = password;
this.rePassword = rePassword;
}
/*
* 封装方法
* */
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRePassword() {
return rePassword;
}
public void setRePassword(String rePassword) {
this.rePassword = rePassword;
}
}
SetLocalAction Action类
package action;
import java.util.Locale;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class SetLocalAction extends ActionSupport {
private String language;
private String location;
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public String execute() throws Exception {
if(null!=language&&null!=location){
ActionContext.getContext().setLocale(new Locale(language, location));
}else{
ActionContext.getContext().setLocale(this.getLocale());
}
return SUCCESS;
}
}
RegisterAction Action类
package action;
import com.opensymphony.xwork2.ActionSupport;
import entity.User;
@SuppressWarnings("serial")
public class RegisterAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println("打印User的信息"+user.getUsername()+" "+user.getPassword()+" "+user.getRePassword());
return SUCCESS;
}
}
RegisterAction-validation.xml 校验器
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<!-- 校验用户名 -->
<field name="user.username">
<!-- 字符串类型用 required 来表示必填 -->
<field-validator type="requiredstring">
<message>用户名是必填项。</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">20</param>
<param name="trim">true</param>
<message>用户名的长度必须在 ${minLength} 至 ${maxLength} 之间。</message>
</field-validator>
</field>
<!-- 校验用户密码 -->
<field name="user.password">
<field-validator type="requiredstring">
<message>用户密码是必填项。</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">8</param>
<param name="maxLength">20</param>
<param name="trim">true</param>
<message>密码的长度必须在 ${minLength} 至 ${maxLength} 之间。</message>
</field-validator>
</field>
<!-- 校验用户密码 -->
<field name="user.rePassword">
<field-validator type="fieldexpression">
<!-- 使用OGNL表达式判断再次密码是否输入一致。 -->
<param name="expression"><![CDATA[ user.password == user.rePassword ]]></param>
<message>两次密码不一致。</message>
</field-validator>
</field>
</validators>
配置 struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"struts-2.3.dtd">
<struts>
<!-- 配置文件修改的时候被重新加载 -->
<constant name="struts.configuration.xml.reload" value="true"></constant>
<!-- 修改系统的主题(页面) -->
<constant name="struts.ui.theme" value="simple"></constant>
<!--配置国际化文件 -->
<constant name="struts.custom.i18n.resources" value="message"></constant>
<package name="default" namespace="/" extends="struts-default">
<action name="setLocal" class="action.SetLocalAction">
<result name="success">/register.jsp</result>
</action>
<action name="setLocal2" class="action.SetLocalAction">
<result name="success">/welcome.jsp</result>
</action>
<action name="register" class="action.RegisterAction">
<result name="success">/welcome.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>
register.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<a href="setLocal.action">恢复默认</a>
<br />
<a href="setLocal.action?language=zh&location=CN">设置大陆中文</a>
<br />
<a href="setLocal.action?language=en&location=GB">设置美国英文</a>
<br />
<a href="setLocal.action?language=zh&location=HK">设置香港繁体</a>
<br />
<h4>
<s:text name="title" />
</h4>
<s:form action="register" method="post" namespace="/">
<table>
<tr>
<td><s:text name="username" /></td>
<td><s:textfield name="user.username"></s:textfield></td>
<td><s:fielderror>
<s:param>user.username</s:param>
</s:fielderror></td>
</tr>
<tr>
<td><s:text name="password" /></td>
<td><s:password name="user.password"></s:password></td>
<td><s:fielderror>
<s:param>user.password</s:param>
</s:fielderror></td>
</tr>
<tr>
<td><s:text name="rePassword" /></td>
<td><s:password name="user.rePassword"></s:password>
</td>
<td><s:fielderror>
<s:param>user.rePassword</s:param>
</s:fielderror></td>
</tr>
<tr>
<td colspan="2"><s:submit value="注册"></s:submit></td>
</tr>
</table>
</s:form>
</body>
</html>
welcome.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>注册成功页面</title>
</head>
<body>
<a href="setLocal2.action">恢复默认</a>
<br />
<a href="setLocal2.action?language=zh&location=CN">设置大陆中文</a>
<br />
<a href="setLocal2.action?language=en&location=GB">设置美国英文</a>
<br />
<a href="setLocal2.action?language=zh&location=HK">设置香港繁体</a>
<br />
<h4><s:text name="prompt" /></h4>
</body>
</html>
效果图: