`
chaoyi
  • 浏览: 291014 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

 
阅读更多

图示:

 

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

 

效果图:

 



 

 

  • 大小: 30.4 KB
  • 大小: 26.8 KB
  • 大小: 38 KB
  • 大小: 17.7 KB
分享到:
评论

相关推荐

    Struts2入门教程(全新完整版)

    一、准备工作及实例 3 1.解压struts-2.1.6-all.zip 3 2.六个基本包 3 3.初识struts2配置文件 4 ... 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图来看: 60

    Struts2技术手册-Struts2精华教程-电子书

    本书内容非常全面,涵盖了众多书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富,是查找技术的好帮手及学习Struts2的不二选择 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的...

    低清版 大型门户网站是这样炼成的.pdf

    2.5.4 struts 2的自带校验器 92 2.6 struts 2的拦截器 94 2.6.1 struts 2内建拦截器介绍 95 2.6.2 定义和使用拦截器栈 97 2.6.3 使用自定义拦截器 98 2.7 小结 100 第3章 struts 2标签库详解与ajax技术应用 ...

    Java Web 整合开发和项目实践(SSH) 高清.part1

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Java Web 整合开发和项目实践(SSH)

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Java Web 整合开发和项目实践(SSH).part3

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Java Web 整合开发和项目实践(SSH).part4

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Spring 2.0 开发参考手册

    3.8.1. 利用MessageSource实现国际化 3.8.2. 事件 3.8.3. 底层资源的访问 3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 ...

    Spring API

    3.8.2. 利用MessageSource实现国际化 3.8.3. 事件 3.8.4. 底层资源的访问 3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ...

    Spring中文帮助文档

    3.8.2. 利用MessageSource实现国际化 3.8.3. 事件 3.8.4. 底层资源的访问 3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ...

    spring chm文档

    3.8.1. 利用MessageSource实现国际化 3.8.2. 事件 3.8.3. 底层资源的访问 3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.8.1. 利用MessageSource实现国际化 3.8.2. 事件 3.8.3. 底层资源的访问 3.8.4. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.9.1. 使用Singleton-helper类 4. 资源 4.1. 简介 4.2. ...

    千方百计笔试题大全

    148、如何实现JSP的国际化? 36 150、如何在JSP中包括绝对路径文件? 使用URLConnection即可。 37 151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前...

    java面试宝典

    148、如何实现JSP的国际化? 36 150、如何在JSP中包括绝对路径文件? 使用URLConnection即可。 37 151、在servlets和JSP之间能共享session对象吗? 37 152、如何设置cookie在某一时间后过期? 37 153、如何获得当前...

Global site tag (gtag.js) - Google Analytics