Struts2(7):Struts2的输入校验框架(xml配置文件校验)

上一节使用了Action类中的validate方法进行校验,此种校验方式适合较为复杂的校验情况。而本节将介绍使用配置文件的校验方式!

在xwork.jar包的com.opensymphony.xwork2.validator.validators目录下有一个default.xml文件。这里面定义了许多struts2的预设的校验器。

1,RegisterAction-validation.xml。放在与action同一目录下,知名得义,不难理解

     如果要给action中的方法abc校验,则文件名可以这样命名:RegisterAction-abc-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<!--此文件必须和RegisterAction.java在同一个目录下-->
<!--对应的type定义都在xwork.jav包下的com.opensymphony.xwork2.validator.validators.default.xml文件 -->
<validators>
	<field name="username">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>username should not be blank!</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">10</param>
			<message>username should be between ${minLength} and ${maxLength}</message>
		</field-validator>
	</field>
	
	<field name="password">
		<field-validator type="requiredstring">
			<message>password should not be null</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">10</param>
			<message>password should between ${minLength} and ${maxLength}</message>
		</field-validator>
	</field>
	<field name="repassword">
		<field-validator type="requiredstring">
			<message>repassword should not be null</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">10</param>
			<message>repassword should be between 6 and 10</message>
		</field-validator>
	</field>
	<field name="age">
		<field-validator type="int">
			<param name="min">1</param>
			<param name="max">150</param>
			<message>age should be between 1 and 150</message>
		</field-validator>
	</field>
	<field name="birthday">
		<field-validator type="required">
			<message>birthday should not be blank!</message>
		</field-validator>
		<field-validator type="date">
			<param name="min">1998-12-12</param>
			<param name="max">2009-12-12</param>	
			<message>the birthday should be between ${min} and ${max}</message>
		</field-validator>
	</field>
	<field name="graduation">
		<field-validator type="required">
			<message>graduation should not be blank!</message>
		</field-validator>
		<field-validator type="date">
			<param name="min">2005-12-12</param>
			<param name="max">2007-12-12</param>	
			<message>the graduation should be between ${min} and ${max}</message>
		</field-validator>
	</field>
</validators>

 这些都是filedError,客户端需使用<s:fielderror/>来接收错误提示。

如果在action中存在validate方法,则两边都会执行,即会执行配置文件中的校验也会执行validate中的校验,建议不重写validate中的校验。

 PS:如果存在子action继承父action的情况,那么校验的顺序会如何呢?如下情况

父类action

ParentAction{
         public void test()
}

 其校验文件是

ParentAction-validation.xml
ParentAction-test-validation.xml

子类action

ChildAction extends ParentAction{
         public void test()
}

 其校验文件是

ParentAction-validation.xml
ParentAction-test-validation.xml

 则执行顺序是,先执行父类中的ParentAction-validation.xml,ParentAction-test-validation.xml
再执行子类中的ParentAction-validation.xml,ParentAction-test-validation.xml


猜你喜欢

转载自mynote.iteye.com/blog/1054669