struts之采用xml来进行数据校验(二)

信息注册界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录界面</title>
<sx:head/><!--必须进行该标签对象的设置操作之后,dojo包当中的数据才能够生效-->
</head>
<body>
	<!--当表单对象当中的数据进行校验失败之后将对应的属性对象当中的错误信息数据进行显示操作-->
	<s:fielderror>
		<s:param>user.userid</s:param>
	</s:fielderror>
 	<s:fielderror>
		<s:param>user.username</s:param>
	</s:fielderror>
	<s:fielderror>
		<s:param>user.password</s:param>
	</s:fielderror> 
	<br>
	<h2>请输入用户名和密码:</h2>
	<!--采用域驱动的方式来进行表单对象的提交操作-->
	<s:form method="post" action="loginAction">
		<s:textfield name="user.userID" label="用户名ID"/>
		<s:textfield name="user.username" label="用户名"/>
	<!--showPassword设置为true后表单校验不通过后所提交的password密码不会丢失-->	
		<s:password name="user.password" showPassword="true" label="密码:"/>
	<!--再次进行密码的提交操作,此时表单对象将会将password参数以数组的形式提交到action对象当中去-->	
		<s:password label="再次输入密码" name="user.repassword" showPassword="true"/>
		<s:textfield label="年龄" name="user.age"/>
		<!-- 使用了dojo的 datetimepicker 标签 日历控件对象,使用该日历控件对象来进行日期的选择操作-->
		<sx:datetimepicker label="生日" name="user.birthday" displayFormat="yyyy-MM-dd"/>
		<s:textfield label="身高" name="user.height"/>
		<s:textfield label="邮件" name="user.email"/>
		<s:submit value="注册"/>
	</s:form>
</body>
</html>
数据进行提交的action对象:

package com.action;

import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.entity.User;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 
 * @author Administrator
 *
 */
public class Register extends ActionSupport implements SessionAware{
	private User user;
	/**当前session会哈对象用户对user对象进行存放操作*/
	private Map<String,Object> session;
	/**
	 * @return the user
	 */
	public User getUser() {
		return user;
	}

	/**
	 * @param user the user to set
	 */
	public void setUser(User user) {
		this.user = user;
	}
	
	public Map<String, Object> getSession() {
		return session;
	}
	@Override
	public void setSession(Map<String, Object> session) {
		this.session = session;
	}

	/* (non-Javadoc)
	 * @see com.opensymphony.xwork2.ActionSupport#execute()
	 */
	@Override
	public String execute() throws Exception {
		System.out.println("执行session会话对象");
		//将当前的user对象存放到集合当中
		session.put("user",user);
		return "success";
	}
	
}
进行数据校验的配置文件:login-validator.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE validators PUBLIC
  		"-//Apache Struts//XWork Validator 1.0.3//EN"
  		"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
	<!--对user对象的昂中的userID属性字段参数进行校验操作-->
	<field name="user.userID">
		<!--用required来标示当前的字符串为必填的字符串-->
		<field-validator type="required">
			<!--进行校验错误信息的编写操作-->
			<message>用户名的ID值是必须填写的</message>
		</field-validator>
<!--对字段的长度进行校验操作,type表明是设置当前所进行数据校验的属性值的类型为int类型的变量,该类型必须要与user属性
值对象当中所设置的userID的属性类型一致才行,否则将会出现类型转换异常-->
		<field-validator type="int">
			<param name="min">1000</param>
			<param name="max">9999</param>
			<message>用户名的ID值必须在 ${min } 到 ${max } 之间,当前的值为 ${user.userID}</message>
		</field-validator>
	</field>
	<!--对用户名进行校验操作-->
	<field name="user.username">
	<!-- 表明要对当前字段的长度进行校验限制操作 -->
        <field-validator type="requiredstring">
        	<!-- 去除username参数值当中的空格字符 -->
            <param name="trim">true</param>
            <message>请输入用户名</message>
        </field-validator>
       <!--  对username参数对象的长度进行校验操作分别设置最小最大参数来进行长度的设置操作 -->
        <field-validator type="stringlength">  
            <param name="minLength">2</param>
            <param name="maxLength">16</param>  
            <message>用户名长度在${minLength}到${maxLength}位之间!</message>  
        </field-validator>
	</field>
	<!--对用户密码进行校验操作-->
	<field name="user.password">
	<!--表明对当前字段对象进行两数比较操作-->
		<field-validator type="fieldexpression">
			<!--使用OGNL表达式对象来判断两次所输入的密码是否一致,expression则表示进行表达式的验证操作-->
			<param name="expression">
				<![CDATA[user.password==user.repassword]]>
			</param>
			<message>两次所输入的密码不一致</message>
		</field-validator>
	</field>
	<!--对用户的年龄进行校验操作-->
	<field name="user.age">
		<field-validator type="int">
			<param name="min">14</param>
			<param name="max">60</param>
			<message>年龄必须在 ${min } 到 ${max }</message>
		</field-validator>
	</field>
	<!--对用户的生日数据进行校验操作-->
	<field name="user.birthday">
		<!--当前所进行校验的数据类型为日期类型的数据-->
		<field-validator type="date">
			<param name="min">1980-01-01</param>
			<param name="max">2050-12-31</param>
			<message>生日输入的合法格式为 yyyy-MM-dd 且时间必须在 ${min } 到 ${max }之间才行</message>
		</field-validator>
	</field>
	<!--对用户的身高进行校验操作-->
	<field name="user.height">
		<!--表明当前所校验的数据的类型是实数类型的数据-->
		<field-validator type="double">
			<!-- 
                minInclusive,maxInclusive 指的是包括边界值
                minExclusive,maxExclusive 指的是不包括边界值 
                                即开区间与闭区间
            -->
            <param name="minInclusive">100.0</param>
            <param name="maxInclusive">300.0</param>
            <message>身高必须在 ${minInclusive }cm 到 ${maxInclusive }cm 之间,当前所输入的身高值为${user.height }cm</message>
		</field-validator>
	</field>
	<!--对当前用户对象的email进行数据校验-->
	<field name="user.email">
		<field-validator type="regex">
			<param name="regex">
				<![CDATA[(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)]]>
			</param>
			<message>email邮箱的格式不正确</message>
		</field-validator>
	</field>
</validators>  	
程序的运行结果:






猜你喜欢

转载自blog.csdn.net/qq_34970891/article/details/78472401