Struts2除了支持程序代码进行表单验证外还支持XML文件方式的验证,相比较程序代码的验证这种方式的验证显得更方便易用。
XML文件验证总结了在开发中经常要用到的表单验证功能,并将其封装后以XML文件的方式来调用其中的功能。其可实现的验证功能如下:
required :必填校验器
requiredstring :必填字符串校验器
int :整数校验器
double :双精度浮点数校验器
date :日期校验器
expression :表达式校验器
fieldexpression :字段表达式校验器
email :电子邮件校验器
url :网址校验器
visitor :Visitor校验器
conversion :转换校验器
stringlength :字符串长度校验器
regex :正则表达式校验器
在使用这种验证时需编写一个<ActionClass>-validation.xml配置,并和需要验证的Action类放在同一个包下,例如用一个名为LoginAction类,那么此类的相应XML配置文件名为LoginAction-validation.xml,如果有多个Action标签使用同一个Action类时则在写文件名时还需在Action类后加上个这Action的name值,例如刚才的LoginAction类的name为register,那么相应的XML文件名则为LoginAction-register-validation.xml。
生成了XML文件后需要为文件写个相应的Doctype标签,这个标签可以在xwork-core-2.1.6.jar包的xwork-validator-1.0.3.dtd文件内找到,内容为:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
需要被验证的信息需写在field标签内,每个field都有一个name属性,其值为唯一性。然后需要在field标签内再定义field-validator标签,field-validator标签有一个type属性用地指出需要使用哪一个验证功能,在此标签下还有param参数标签和message标签,参数是可选的,但message标签必需指出,其值便是验证出错时显示的信息。每个field标签下可以有多个field-validator标签。
现在以一个实例来说明
index.jsp用以显示一个用户注册的页面
ValidateAction-validation.xml文件
ValidateAction类用于实现Action类,在类中我们会比较两次输入的密码是否相同,如果不相同则回到输入页面显示出错信息,否则就把表单中的用户信息显示在page.jsp页面中。