一般struts2校验器有二种写法:
一、直接在Action里面继承ActionSupport,重写validatate()方法,为当前Action的全局校验器;或定义validate[Method Name]的方法,后台会在执行某Method前,利用反射机制,调用该Method的校验器。
校验器方法里面编写校验规则,一般用AddActionError("error Message") 或 AddFieldError(Filed name,"error Message")等两种方法。
他们的区别在:
AddActionError 底层由ArrayList<String>维护,也就说明每检验到一个错误,就将其存入到ArrayList中,对于每种错误结果,系统并不知道是对应哪个字段。
AddFieldError 底层由Map(String, ArrayList<String>) 维护,也就说明单一字段可以对应多个检测结果。
最后在该Action的当前目录下创建ActionName.properpies属性文件,配置对应字段在类型转换出错时的提示信息。
格式如下:invalid.fieldvalue.FiledName = "Filed Name convert error"
二、利用由Xwork底层为我们实现的校验框架,步骤如下:
1)直接在Action当前目录下创建名为 ActionName-validation.xml文件。
2)导入DTD规则文件:<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
3)选择字段校验器或者非字段校验器
4)编写校验规则,由com.opensymphony.xwork2.validator.validators.default.xml提供的以下校验器
<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>