Struts2的内置校验器



Struts2的内置校验器。

从Struts2的配置文件中可以看到Struts2有如下内建校验器:

 

1,required 必填校验器,要求字段必须有值

<field-validator type=”required”>

<message>性别不能为空</message>

</field-validator>

 

2,requiredstring 必填字符串校验器,要求必须有值且长度大于0,即不能是空字符串。默认会去掉字符串前后空格

<field-validator type=”requiredstring”>

<paramname=”trim”>true</param>

<message>用户名不能为空</message>

</field-validator>

3,stringlength 字符串长度校验器

<field-validator type=” stringlength”>

<paramname=”trim”>true</param>

<paramname=”maxLenght”>10</param>

<paramname=”minLenght”>2</param>

<message>![CDATA[产品名称应在2-10个字符之间]]</message>

</field-validator>

 

4,regex 正则表达式校验器,检查被校验的field是否匹配一个正则表达式,expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true

<field-validatortype=”regex”>

<paramname=”expression”><![CDATA[^1[3568]\d{9}$]]></param>

<message>手机号格式不正确!</message>

</field-validator>

 

5,int 整数校验器,可以配置整数在指定的范围内

 

6,double 双精度校验器,可以配置双精度数在指定的范围内

 

7,date 日期校验器,可以配置日期在指定的范围内

 

8,expression 表达式校验器,它是一个非字段校验器,当参数expression计算的值为true时,校验通过,否则返回提示。

 

9,fieldexpression 字段表达式校验器,当参数expression计算的值为true时,校验通过,否则返回提示。它和6一样多用于在用户的两次输入中间进行判断,如下例:

<!– 要校验的属性为rpass –>

<field name=”rpass”>

<!– 使用fieldexpression校验器 –>


<field-validator type=”fieldexpression”>

<param name=”expression”><![CDATA[(rpass ==password)]]></param>

<message>两次密码不相同!</message>

</field-validator>

</field>

 

10,url 网址校验器,要求被检查的字段如果非空,则必须是合法的URL地址。7和8都是基于正则表达式来计算的,可能会随着技术的进步而不同,用户可以自己扩展。

 

11,email 邮件地址校验器,要求被检查的字段如果非空,则必须是合法的邮件地址。

对同一个field可以同时使用多个校验器

 

使用:Struts2中校验文件,它的命名方式为ActionClassName-validation.xml。它存放在与Action相同的包中,校验只需要配置一个校验文件即可实现。系统的其它地方不需要改动,系统会自动加载该文件。这种方式会对这个Action类中的全部方法提供校验。如果只需要对action中的某一个方法实施校验,那么,校验文件的取名应为ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。

例如,在实际应用中

struts.xml中配置如下:

<action name=”user_*” method=”{1}”>

<result name=”success”>/WEB-INF/pages/message.jsp</result>

<result name=”input”>/WEB-INF/pages/addUser.jsp</result>

</action>

 

UserAction中有一下两个方法:

public String add(){

}

 

public String update(){

}

要对add()方法进行校验,校验文件应命名为:UserAction-user_add-validation.xml

要对update()方法进行校验,校验文件应命名为:UserAction-user_update-validation.xml

 

当为某个action提供了ActionClassName-validatioin.xml和ActionClassName-ActionName-validation.xml两种规则的校验文件时,系统按下面的顺序寻找校验文件:

1. ActionClassName-validatioin.xml

2. ActionClassName-ActionName-validation.xml

当action继承了另一个action,父类action的校验文件会先被搜索到,例如:

假设UserAction继承BaseAction:

<action name=”user_*” method=”execute”>

</action>

访问上述action, 系统先搜索父类的校验文件:BaseAction-validation.xml, BaseAction-user-validation.xml,接着搜索子类的检验文件:UserAction-validation.xml,UAction-user-validation.xml

系统寻找到第一个校验文件时,还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总,然后全部应用于action方法的校验中。如果两个校验文件中指定的校验规则冲突,则只是是用后被搜索到的校验文件中的校验规则。