zoukankan      html  css  js  c++  java
  • 笔记:Struts2 输入校验

    Struts2的输入校验包含了客户端校验和服务器端校验,通过编写校验规则文件来实现输入校验,需要增加 Convention 插件,将 struts2-convention-plugin-2.3.31.jar 复制到 WEB-INF/lib 目录中

    1. 校验规则文件
      1. 校验规则文件命名格式:ActionName-validation.xml,其中 ActionName 为校验的 Action名称,后面的 -validation.xml 为固定字符串,并将校验规则文件保持到 Action 相同的路径下
      2. Struts2 Action包含多个处理逻辑时,可以为不同的控制逻辑指定不同的校验规则文件,Struts2允许通过校验规则文件别名来指定具体需要校验的处理逻辑,命名规则:ActionClassName-ActionAliasName-validation.xml,其中 ActionClassName Action处理类的类名,ActionAliasName 就是在 struts.xml 中配置该 Action 时指定的 name 属性。
      3. 当输入校验失败后 Status2 会返回名为 input 的逻辑视图,因此需要处理 input 的逻辑视图
    2. 规则文件优先级
      1. Struts2 搜索规则文件的规则时从上而下的,实际使用的时校验规则文件的所有规则的总和,如果二个校验文件中指定的校验规则冲突,则以后面文件中的校验规则为准。
      2. 首先查找 ActionName-validation.xml ,然后取 ActionClassName-ActionAliasName-validation.xml,如果Action有基类,则按照此顺序先取基类的校验文件规则,后取子类的校验文件规则。
    3. 配置说明
      1. 规则校验文件XML头和根节点如下:

        <?xml version="1.0" encoding="UTF-8"?>

        <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN"

        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

        <validators>

        <!--配置内容-->

        </validators>

      2. 规则校验文件有二种配置风格,一种时字段优先,称为字段校验器风格;另一种是校验器优先,称为非字段校验器风格
        1. 字段校验器风格,校验文件里以<field…/>元素为基本子元素,配置格式如下:

          <field name="字段名称">

          <field-validator type="校验器名称" short-circuit="短路校验,默认值:false">

          <param name="参数名">参数值</param>

          ……

          <message key="国际化资源文件Key">校验失败的提示信息</message>

          </field-validator>

          <!--字段需要满足多个规则,下面可以配置多个校验器-->

          </field>

        2. 非字段校验器风格,校验文件里以<validator…/>元素为基本子元素,配置格式如下:

          <validator type="校验器名称" short-circuit="短路校验,默认值:false">

          <param name="fieldName">需要被校验的字段</param>

          <param name="参数名">参数值</param>

          ……

          <message key="国际化资源文件Key">校验失败的提示信息</message>

          </validator>

      3. 内建校验器
        1. required:要求指定的字段值必须有值(非空)
        2. requiredstring:要求指定的字段值必须非空且长度大于0
          1. 参数 trim:是否在校验前截断被校验属性值的前后空白,默认值 true
        3. Intlongshortdoubledate:该校验器要求字段的整数值必须在范围内
          1. 参数 min:指定该属性的最小值,默认不检查最小值
          2. 参数 max:指定该属性的最大值,默认不检查最大值
        4. expression:非字段校验器,不能使用字段校验器风格配置,该表达式校验器要求OGNL表达式返回 true,返回 true 表示校验通过,否则校验没有通过
          1. 参数 expression:该参数指定一个逻辑表达式,该逻辑表达式基于 ValueStack进行求值
        5. fieldexpression:要求指定的字段满足一个逻辑表达式
          1. 参数 expression:该参数指定一个逻辑表达式,该逻辑表达式基于 ValueStack进行求值
        6. emailurl:要求指定的字段在非空的情况下,则必须是合法的emailurl,注意:因为在不断发展,建议开发自定义的 校验器来处理 邮件和URL地址。
        7. visitor:主要用于检测 Action 里面的复合类型,使用复合类型的规则校验文件来验证,默认情况下,该校验文件规则文件名称为 ClassName-validation.xml ,其中 ClassName 为复合类型的名称(不包含包名),如果配置了参数 context 则校验文件名称为 ClassName-context参数值-validation.xml,该规则校验文件需要放在复合类型.class文件相同的路径
          1. 参数 context:检测规则的上下文,用于区分复合类型的不同业务校验规则
          2. 参数 appendPrefix:校验失败是否增加提示消息前缀,如果配置了 true,则会将<message…/>的值做为消息前缀
        8. conversion:检查指定的字段在类型转换过程中是否出现错误
          1. 参数 repopulateField:当类型转换失败后,返回 input 页面时,类型转换失败的表单域是否保留原来的错误输入
        9. stringlength:要求指定的字段长度必须在指定的范围内
          1. 参数 trim:是否在校验前截断被校验属性值的前后空白,默认值 true
          2. 参数 minLength:指定字符串值的最小长度,默认不限制最小长度
          3. 参数 maxLength:指定字符串值的最大长度,默认不限制最大长度
        10. regex:检查字段是否匹配一个正则表达式
          1. 参数 regex:该参数指定匹配用的正则表达式,示例:<param name="regex"><![CDATA[(正则表达式)]]></param>
          2. 参数 caseSensitive:正则表达式是否区分大小写,默认值 true
      4. 自定义校验器
        1. 继承 FieldValidatorSupport  类,实现基类的 validate 方法来对字段值进行校验,其 getFieldName 方法获取字段名称;getFieldValue 方法获取界面输入的值;如果验证出现错误,则通过 addFieldError 增加校验错误信息。
        2. 增加校验器注册文件,在 src 路径下增加 validators.xml,配置格式如下:

          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE validators PUBLIC

          "-//Apache Struts//XWork Validator Definition 1.0//EN"

          "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">

          <validators>

          <validator name="校验器名称" class="校验器的具体实现类名称(包含包名称)" />

          </validators>

             

             

           

           

       

    本文版权归作者 李雪(博客地址:https://www.cnblogs.wiki)所有,欢迎转载和商用,请在文章页面明显位置给出原文链接并保留此段声明,否则保留追究法律责任的权利,其他事项,可留言咨询。
  • 相关阅读:
    关于浏览器及系统的判断
    toggle与slideToggle
    安卓与ios的不同处理
    关于常用循环遍历获取数据
    docker
    Mysql
    rabbitMQ的使用转载
    Git命令行
    vue项目创建完整版
    redis操作(str.hash.list.set)
  • 原文地址:https://www.cnblogs.com/li3807/p/6353857.html
Copyright © 2011-2022 走看看