图示:

Struts2 校验器和国际化结合使用_struts

 

首先写三份不同国家语言的 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>

 

效果图:

Struts2 校验器和国际化结合使用_java_02


 

Struts2 校验器和国际化结合使用_User_03

Struts2 校验器和国际化结合使用_java_04