xml的验证

发表时间:2017-05-16 15:48:54 浏览量( 29 ) 留言数( 0 )

学习目标:

1、了解Struts2的xml验证


学习过程:

使用XML验证的好处是可以把验证代码通过配置的方式实现,这样就可以让我们的系统的耦合度更加低,而且代码清晰,容易维护。实现也比较简单。

一、建立验证文档

首先,我们要在action类的同一目录下建立一个验证文档validation.xml,这个验证文档的格式要不是 <ActionClassName>-validation.xml ,要不就是 <ActionClassName>-<ActionAliasName>-validation.xml。ActionClassName是的类名,ActionAliasName可以是action配置文件中的name属性,也就是访问的路径。那么现在就现在UserAction类中建立一个UserAction-add-validation.xml。配置文件。因为我们要验证的是adduser方法,adduser的方法的action的访问名称是add,该方法的代码如下:可见

@Action(value = "add", results = {
			@Result(name = "success", location = "/success.jsp"), @Result(name="input",location="/userAdd.jsp") })
	public String adduser() {

		System.out.println(user.getUsername() + "保存了。");
		// userDao.add(user)

		return SUCCESS;
	}

二、书写验证规则

struts2验证方式有很多种,具体大家可以参考文档。

http://struts.apache.org/development/2.x/docs/validation.html

在文档的对struts2的所有内置的验证的说明


验证一般有两种写法;

1、先写验证规则,然后声明该验证规则作用于那个属性。示范代码如下:

<validator type="stringlength">
		<param name="fieldName">user.passwd</param>
		<param name="minLength">6</param>
		<param name="maxLength">20</param>
		<param name="trim">true</param>
		<message>密码长度介于6至20</message>
	</validator>

2、先说明需要验证的属性,在写验证规则。示范代码如下:

<field name="user.age">
		<field-validator type="required">
			<message>你必须输入年龄</message>
		</field-validator>
		<field-validator type="int">
			<param name="min">18</param>
			<param name="max">50</param>
			<message>Age needs to be between ${min} and ${max}</message>
		</field-validator>
</field>

下面是我们的验证文档的完整代码:

<?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>
	<field name="user.username">
	<!-- 
		<field-validator type="requiredstring">
			key 读取国际化资源文件
			<message key="usernameerror"></message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">20</param>
			<param name="trim">true</param>
			<message>长度介于6至20</message>
		</field-validator>
 -->
		<field-validator type="requiredstring">
			<message key="usernameerror"></message>
		</field-validator>

<!-- 可以使用正则表达式的方式 -->
		<field-validator type="regex">
			<param name="expression"><![CDATA[(\w{4,20})]]></param>
			<message key="usernameerror"></message>
		</field-validator>

	</field>

       <!--字符串长度验证-->
	<validator type="stringlength">
		<param name="fieldName">user.passwd</param>
		<param name="minLength">6</param>
		<param name="maxLength">20</param>
		<param name="trim">true</param>
		<message>密码长度介于6至20</message>
	</validator>

	<field name="user.age">
	        <!--非空验证-->
		<field-validator type="required">
			<message>你必须输入年龄</message>
		</field-validator>
		 <!--整型验证-->
		<field-validator type="int">
			<param name="min">18</param>
			<param name="max">50</param>
			<message>Age needs to be between ${min} and ${max}</message>
		</field-validator>
	</field>

	<field name="user.registerTime">
	        <!--日期验证-->
		<field-validator type="date">
			<param name="min">01/01/1990</param>
			<param name="max">01/01/2013</param>
			<message>Birthday must be within ${min} and ${max}</message>
		</field-validator>
	</field>


	<field name="user.weight">
	         <!--浮点验证-->
		<field-validator type="double">
			<param name="minExclusive">0.123</param>
			<param name="maxExclusive">99.98</param>
			<message>Percentage needs to be between ${minExclusive}
				${maxExclusive} (exclusive)
			</message>
		</field-validator>
	</field>

	<field name="user.email">
	       <!--邮件验证-->
		<field-validator type="email">
			<message>Must provide a valid email</message>
		</field-validator>
	</field>

</validators>

三、现在你可以在浏览器上面测试一下。当然,你可以先把上一节的代码验证的那两个方法都注释了。