Struts2的内建验证器

内建验证器

struts2为我们共内置了16个验证器,且全部是基于字段的验证器。

required validator

功能

用来验证某个给定的字段的值不是null。注意,空字符串不是null。

参数

参数名

类型

默认值

必须的

描述

fieldName

String

 

no

要验证的字段名

 

(用法见后面的说明)

示例

页面:

 

<s:fielderror/>

    <s:form action="validate">

        <s:textfield name="userName" label="用户名"></s:textfield>

        <s:submit value="登录"></s:submit>

    </s:form>

 

动作类:

 

import com.opensymphony.xwork2.ActionSupport;

 

public class ValidationAction extends ActionSupport {

 

    private static final long serialVersionUID = 6877330242746547448L;

    private String userName;

    private String password;

    public String getUserName() {

        return userName;

    }

    public void setUserName(String userName) {

        this.userName = userName;

    }

    public String getPassword() {

        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

   

}

 

验证配置文件:

 

<validators>

    <field name="password">

        <field-validator type="required">

            <message>The password field is required!</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="required">

        <param name="fieldName">password</param>

        <message>The password field is required!</message>

    </validator>

</validators>

 

requiredstring validator

功能

验证给定的字段的值既不是null、也不是空白。

参数

参数名

类型

默认值

必须的

描述

fieldName

String

 

no

要验证的字段名

trim

Boolean

true

no

验证前是否要去掉前导和尾缀的空白字符

示例

页面:

 

    <s:form action="validate">

        <s:textfield name="userName" label="用户名" required="true" requiredposition="left"></s:textfield>

        <s:password name="password" label="密码" required="true" requiredposition="left"></s:password>

        <s:submit value="登录"></s:submit>

    </s:form>

 

动作类:

 

import com.opensymphony.xwork2.ActionSupport;

 

public class ValidationAction extends ActionSupport {

 

    private static final long serialVersionUID = 6877330242746547448L;

    private String userName;

    private String password;

    public String getUserName() {

        return userName;

    }

    public void setUserName(String userName) {

        this.userName = userName;

    }

    public String getPassword() {

        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

   

}

 

验证配置文件:

 

<validators>

    <field name="userName">

        <field-validator type="requiredstring">

            <message>Please input the userName!</message>

        </field-validator>

    </field>

    <field name="password">

        <field-validator type="requiredstring">

            <param name="trim">false</param>

            <message>Please input the password!</message>

        </field-validator>

    </field>

</validators>

运行结果:

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="requiredstring">

        <param name="fieldName">userName</param>

        <message>Please input the userName!</message>

    </validator>

    <validator type="requiredstring">

        <param name="fieldName">password</param>

        <param name="trim">false</param>

        <message>Please input the password!</message>

    </validator>

</validators>

int validator

功能

用来验证某个字段的值是否可以被转换为一个整数。若指定参数,还验证是否在允许的范围内。

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

min

Integer

 

允许的最小值。若没有给出该参数则无限制

max

Integer

 

允许的最大值。若没有给出该参数则无限制

 

示例

页面:

 

<s:form action="validate">

        <s:textfield name="age" label="年龄"></s:textfield>

        <s:submit value="登录"></s:submit>

    </s:form>

 

动作类:

 

private Integer age;

   

    public Integer getAge() {

        return age;

    }

    public void setAge(Integer age) {

        this.age = age;

    }

 

验证配置文件:

 

<validators>

    <field name="age">

        <field-validator type="int">

            <param name="min">18</param>

            <param name="max">60</param>

            <message>The age must be between ${min} and ${max}</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="int">

        <param name="fieldName">age</param>

        <param name="min">18</param>

        <param name="max">60</param>

        <message>The age must be between ${min} and ${max}</message>

    </validator>

</validators>

long validator

功能

用来验证某个字段的值是否可以被转换为一个长整数。若指定参数,还验证是否在允许的范围内。

 

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

min

Long

 

允许的最小值。若没有给出该参数则无限制

max

Long

 

允许的最大值。若没有给出该参数则无限制

 

示例

页面:

 

 

 

动作类:

 

 

 

验证配置文件:

 

 

 

运行结果:

 

 

 

 

 

说明

 

short validator

功能

用来验证某个字段的值是否可以被转换为一个短整数。若指定参数,还验证是否在允许的范围内。

 

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

min

Short

 

允许的最小值。若没有给出该参数则无限制

max

Short

 

允许的最大值。若没有给出该参数则无限制

 

示例

页面:

 

 

 

动作类:

 

 

 

验证配置文件:

 

 

 

运行结果:

 

 

 

 

 

说明

 

double validator

功能

用来验证某个字段的值是否可以被转换为一个双精度浮点数。若指定参数,还验证是否在允许的范围内。

 

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

minInclusive

Double

 

允许的最小值。若没有给出该参数则无限制(含最小值)

maxInclusive

Double

 

允许的最大值。若没有给出该参数则无限制(含最大值)

minExclusive

Double

 

允许的最小值。若没有给出该参数则无限制(不含最小值)

maxExclusive

Double

 

允许的最大值。若没有给出该参数则无限制(不含最大值)

 

示例

页面:

 

<s:form action="validate">

        <s:textfield name="percentage1" label="百分比1"></s:textfield>

        <s:textfield name="percentage2" label="百分比2"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

 

动作类:

 

private Double percentage1;

    private Double percentage2;

   

    public Double getPercentage1() {

        return percentage1;

    }

    public void setPercentage1(Double percentage1) {

        this.percentage1 = percentage1;

    }

    public Double getPercentage2() {

        return percentage2;

    }

    public void setPercentage2(Double percentage2) {

        this.percentage2 = percentage2;

    }

 

验证配置文件:

 

<validators>

    <field name="percentage1">

        <field-validator type="double">

            <param name="minInclusive">20.1</param>

            <param name="maxInclusive">50.1</param>

            <message> The age must be between ${ minInclusive } and ${ maxInclusive }(含)</message>

        </field-validator>

    </field>

    <field name="percentage2">

        <field-validator type="double">

            <param name="minExclusive">0.345</param>

            <param name="maxExclusive">99.987</param>

            <message> The age must be between ${ minExclusive } and ${ maxExclusive }(不含)</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="double">

        <param name="fieldName">percentage1</param>

        <param name="minInclusive">20.1</param>

        <param name="maxInclusive">50.1</param>

        <message> The age must be between ${ minInclusive } and ${ maxInclusive }(含)</message>

    </validator>

    <validator type="double">

        <param name="fieldName">percentage2</param>

        <param name="minExclusive">0.345</param>

            <param name="maxExclusive">99.987</param>

            <message> The age must be between ${ minExclusive } and ${ maxExclusive }(不含)</message>

    </validator>

</validators>

date validator

功能

用来确保给定的日期字段的值落在一个给定的范围内。

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

min

java.util.Date

 

允许的最小值。若没有给出该参数则无限制(含最小值)

max

java.util.Date

 

允许的最大值。若没有给出该参数则无限制(含最大值)

 

示例

页面:

 

    <s:form action="validate">

        <s:textfield name="birthday" label="出生日期"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

动作类:

 

private Date birthday;

   

    public Date getBirthday() {

        return birthday;

    }

    public void setBirthday(Date birthday) {

        this.birthday = birthday;

    }

验证配置文件:

 

<validators>

    <field name="birthday">

        <field-validator type="date">

            <param name="min">2011-01-01</param>

            <param name="max">2011-12-31</param>

            <message>日期必须为2011年</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="date">

        <param name="fieldName">birthday</param>

        <param name="min">2011-01-01</param>

        <param name="max">2011-12-31</param>

        <message>日期必须为2011年</message>

    </validator>

</validators>

expression validator

功能

用于验证是否满足一个OGNL表达式。这是一个非字段的验证。只有给定的参数的返回值是true时才能验证通过。验证不通过时产生一个动作错误,因此要显示该错误,需要使用<s:actionerror/>标签。

参数

参数名

类型

默认值

描述

expression

String

 

OGNL表达式,只有该表达式为true才能验证通过

 

示例

页面:

 

    <s:actionerror/>

    <s:form action="validate">

        <s:textfield name="minNumber" label="最小值"></s:textfield>

        <s:textfield name="maxNumber" label="最大值"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

 

动作类:

 

private Integer minNumber;

    private Integer maxNumber;

   

   

    public Integer getMinNumber() {

        return minNumber;

    }

    public void setMinNumber(Integer minNumber) {

        this.minNumber = minNumber;

    }

    public Integer getMaxNumber() {

        return maxNumber;

    }

    public void setMaxNumber(Integer maxNumber) {

        this.maxNumber = maxNumber;

    }

 

验证配置文件:

 

<validators>

    <validator type="expression">

        <param name="expression">

            maxNumber>minNumber

        </param>

        <message>最大值必须大于最小值</message>

    </validator>

</validators>

 

运行结果:

 

 

 

说明

该验证器没有字段形式的写法。要进行字段验证,请使用fieldexpression验证器。

fieldexpression validator

功能

用于验证某个字段是否满足一个OGNL表达式。这是一个基于字段的验证。只有给定的参数的返回值是true时才能验证通过。验证不通过时产生一个字段错误。

 

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

expression

String

 

OGNL表达式,只有该表达式为true才能验证通过

 

示例

页面:

 

    <s:form action="validate">

        <s:textfield name="minNumber" label="最小值"></s:textfield>

        <s:textfield name="maxNumber" label="最大值"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

 

动作类:

 

private Integer minNumber;

    private Integer maxNumber;

   

   

    public Integer getMinNumber() {

        return minNumber;

    }

    public void setMinNumber(Integer minNumber) {

        this.minNumber = minNumber;

    }

    public Integer getMaxNumber() {

        return maxNumber;

    }

    public void setMaxNumber(Integer maxNumber) {

        this.maxNumber = maxNumber;

    }

 

验证配置文件:

 

<validators>

    <field name="maxNumber">

        <field-validator type="fieldexpression">

            <param name="expression">

            maxNumber>100

        </param>

        <message>最大值必须大于最小值1</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="fieldexpression">

        <param name="fieldName">maxNumber</param>

        <param name="expression">

            maxNumber>minNumber

        </param>

        <message>最大值必须大于最小值</message>

    </validator>

</validators>

email validator

功能

用来验证给定的字段是否符合一个Email的规范。它的正则表达式为

\\b(^[_A-Za-z0-9-](\\.[_A-Za-z0-9-])*@([A-Za-z0-9-])+((\\.com)|(\\.net)|(\\.org)|(\\.info)|(\\.edu)|(\\.mil)|(\\.gov)|(\\.biz)|(\\.ws)|(\\.us)|(\\.tv)|(\\.cc)|(\\.aero)|(\\.arpa)|(\\.coop)|(\\.int)|(\\.jobs)|(\\.museum)|(\\.name)|(\\.pro)|(\\.travel)|(\\.nato)|(\\..{2,3})|(\\..{2,3}\\..{2,3}))$)\\b

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

 

示例

页面:

 

    <s:form action="validate">

        <s:textfield name="email" label="邮箱"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

 

动作类:

 

    private String email;

   

   

    public String getEmail() {

        return email;

    }

    public void setEmail(String email) {

        this.email = email;

    }

 

验证配置文件:

 

<validators>

    <field name="email">

        <field-validator type="email">

            <message>请输入正确的邮箱</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

说明

验证配置文件的另外一种写法:

 

<validators>

    <validator type="email">

        <param name="fieldName">email</param>

        <message>请输入正确的邮箱</message>

    </validator>

</validators>

url validator

功能

用来验证给定的字段值是否是一个合法的URL地址。

参数

参数名

类型

默认值

描述

fieldName

String

 

要验证的字段名

 

示例

页面:

    <s:form action="validate">

        <s:textfield name="url" label="个人主页"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

 

动作类:

 

    private String url;

   

   

    public String getUrl() {

        return url;

    }

    public void setUrl(String url) {

        this.url = url;

    }

 

验证配置文件:

 

<validators>

    <field name="url">

        <field-validator type="url">

            <message>请输入正确的地址</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

<validators>

    <validator type="url">

        <param name="fieldName">url</param>

        <message>请输入正确的地址</message>

    </validator>

</validators>

 

visitor validator

功能

该验证程序可以提高代码的可重用性,你可以利用它把同一个验证程序配置文件用于多个动作。

参数

 

示例

页面:

 

    <s:form action="customer_save">

        <s:textfield name="address.streetName" label="街道"></s:textfield>

        <s:submit></s:submit>

    </s:form>

 

动作类:

 

public class Customer extends ActionSupport {

    private Address address;

 

    public Address getAddress() {

        return address;

    }

 

    public void setAddress(Address address) {

        this.address = address;

    }

   

}

 

public class Address {

    private String streetName;

 

    public String getStreetName() {

        return streetName;

    }

 

    public void setStreetName(String streetName) {

        this.streetName = streetName;

    }

   

}

 

验证配置文件:

Address-validation.xml

<validators>

    <field name="streetName">

        <field-validator type="requiredstring">

            <message>请输入正确街道地址</message>

        </field-validator>

    </field>

</validators>

Customer-validation.xml

 

<validators>

    <field name="address">

        <field-validator type="visitor">

            <message>Address:</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

 

conversion validator

功能

 

参数

 

示例

页面:

 

 

 

动作类:

 

 

 

验证配置文件:

 

 

 

运行结果:

 

 

 

 

 

说明

 

stringlength validator

功能

用来验证一个非空的字段值是不是有足够的长度。

参数

 

示例

页面:

 

 

 

动作类:

 

 

 

验证配置文件:

 

 

 

运行结果:

 

 

 

 

 

说明

 

regex validator

功能

用来检查给定字段是否与给定的正则表达式相匹配。正则表达式的详细内容可以参考JDK的java.util.regex.Pattern类。

参数

参数名

类型

默认值

描述

fieldname

String

 

要验证的字段名

expression

String

 

正则表达式。此参数是必须的

caseSensitive

Boolean

true

是否区分大小写的情况

trim

Boolean

true

验证前是否要去掉前导和尾缀的空白字符

 

示例

页面:

 

    <s:form action="validate">

        <s:textfield name="userName" label="用户名"></s:textfield>

        <s:submit value="保存"></s:submit>

    </s:form>

 

动作类:

 

private String userName;

   

    public String getUserName() {

        return userName;

    }

    public void setUserName(String userName) {

        this.userName = userName;

    }

 

验证配置文件:

 

<validators>

    <field name="userName">

        <field-validator type="regex">

            <param name="expression"><![CDATA[([aAbBcCdD][123][eEfFgG][456])]]></param>

            <message> 用户名必须符合规范</message>

        </field-validator>

    </field>

</validators>

 

运行结果:

 

 

 

说明

验证配置文件的另外一种写法:

<validators>

    <validator type="regex">

        <param name="fieldName">userName</param>

        <param name="expression"><![CDATA[([aAbBcCdD][123][eEfFgG][456])]]></param>

            <message> 用户名必须符合规范</message>

    </validator>

</validators>

conditionalvisitor

功能

 

参数

 

示例

页面:

 

 

 

动作类:

 

 

 

验证配置文件:

 

 

 

运行结果:

 

 

 

 

 

说明

 

posted @ 2020-08-08 16:02  htj10  阅读(135)  评论(0编辑  收藏  举报
TOP