struts2提供的校验有两种:一种是之前所提到的validate校验方法,另一种就是本篇所要讲的校验框架,通过有效的xml文件,实现不用编写代码,根据校验规则来对指定文件进行校验。
1.xwork-validation-1.0.2.dtd:
<?xml version="1.0" encoding="UTF-8"?>
<!--
XWork Validators DTD.
Used the following DOCTYPE.
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
-->
<!ELEMENT validators (field|validator)+>
<!ELEMENT field (field-validator+)>
<!ATTLIST field
name CDATA #REQUIRED
>
<!ELEMENT field-validator (param*, message)>
<!ATTLIST field-validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT validator (param*, message)>
<!ATTLIST validator
type CDATA #REQUIRED
short-circuit (true|false) "false"
>
<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>
<!ELEMENT message (#PCDATA)>
<!ATTLIST message
key CDATA #IMPLIED
>
2.<!ELEMENT validators (field|validator)+> 表示框架验证有两种方式:
(1)字段优先校验(以action中的成员变量作为参照物,实施各种校验)
RegisterAction-validation.xml:(与需要进行校验的action放置一起,命名规则要待验证action-validation)
<?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="username">
<field-validator type="requiredstring">
<message>username can't be null</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">6</param>
<message>username should be ${minLength} and ${maxLength}</message>
</field-validator>
</field>
</validators>
(2)校验器优先校验
(3)要想查阅各种type的类型,可以打开的default.xml
而如果想查看校验器类型中的属性,可以跟进后面的class中,查看xwork原代码
(4)两种校验框架校验方式可以混合使用,顺序不定。
(5)Struts2框架校验执行的先后顺序:
1) 首先执行校验框架(xml文件)
2) 执行自定义方法的校验方法(validateMyExecute)
3) 执行validate方法