zoukankan      html  css  js  c++  java
  • 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

    功能

    参数

    示例

    页面:

    动作类:

    验证配置文件:

    运行结果:

    说明

    常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    navigateTo防止多次跳转
    vue中的绑定class和微信小程序中的绑定class的区别
    js同步和异步
    本地存储和vuex使用对比
    微信小程序页面跳转区别总结
    CAS-技术专区-认证服务器cas-server搭建
    CAS-技术专区-SSO配置完整案例(静态认证+数据库认证)
    SpringCloud-技术专区-实战案例-Zuul整合OAuth2.0认证服务
    OAuth2.0协议专区-SpringCloud安全-集成OAuth2实现身份认证和单点登录
    OAuth2.0协议专区-SpringCloud微服务实战-基于OAUTH2.0统一认证授权的微服务基础架构
  • 原文地址:https://www.cnblogs.com/htj10/p/13458193.html
Copyright © 2011-2022 走看看