zoukankan      html  css  js  c++  java
  • Java 注解方式校验请求参数

    1. 参数校验常用注解

     
           注解 验证的数据类型 备注                            
     Null   任意类型  参数值必须是 Null
     NotNull   任意类型  参数值必须不是 Null
     NotBlank   只能作用于字符串

     字符串不能为 null,而且字符串长度必须大于0,至少包含一个非空字符串

     NotEmpty   

     CharSequence

     Collection

     Map

     Array 

     字符串:字符串长度必须大于0,空字符串(“ ”)可以通过校验;

     Collection:集合大小必须大于0;

     Map:map的大小必须大于0;

     Array:数组长度必须大于0;

     Size  

     CharSequence

     Collection

     Map

     Array 

     同 NotEmpty
     Range

     数字类型

     字符串类型

     数值或者字符串的值必须在 min 和 max 指定的范围内
     Length  字符串类型  字符串的长度在min 和  max 之间
     Pattern  字符串类型   验证字符串是否符合正则表达式
     Min  整型类型   参数值必须大于等于 最小值
     Max  整型类型   参数值必须小于等于 最大值
     DecimalMin  整型类型    参数值必须大于等于 最小值 
     DecimalMax  整型类型    参数值必须小于等于 最大值 
     AssertTrue  布尔类型   参数值必须为 true
     AssertFalse  布尔类型    参数值必须为 false 
     Past  时间类型   参数值必须小于 当前时间
     Future  时间类型   参数值必须大于 当前时间

     

     

     

     

     

     

     

     

     

      

    2.  @Validated 和 @Valid

    2.1 相同点

      在检验参数符合规范的功能上基本一致;

    2.2 不同点

    2.2.1 提供者

      validated 是Spring Validation验证框架对参数的验证机制;

      valid是 javax 提供的参数验证机制

    2.2.2 作用域

      validated :类,方法,参数

      valid:方法, 字段, 构造方法, 参数, TYPE_USE;

      TYPE_USE:

        Java 8 之前的版本中,只能允许在声明式前使用 Annotation。而在 Java 8 版本中,Annotation 可以被用在任何使用 Type 的地方,例如:初始化对象时 (new),对象类型转化时,使用 implements 表达式时,或者使用 throws 表达式时。

        //初始化对象时
        String myString = new @Valid String();
    
        //对象类型转化时
        myString = (@Valid String) str;
    
        //使用 implements 表达式时
        class MyList<T> implements List<@Valid T> {
                        ...
        }
    
        //使用 throws 表达式时
        public void validateValues() throws @Valid ValidationFailedException{
                        ...
        }

    3. 嵌套检验

      在被检验的字段上添加 @Valid 注解就可以实现嵌套检验

      当对象 Man 的字段 houses 包含 House 对象类型时,在检验 houses 字段时可以检验 House 对象的属性字段时,就称为嵌套检验。

      示例如下:

      在检验 Man 对象的 houses 字段时,在houses 字段上添加 @Valid 注解后,就可以检验 list 中的 House 的属性是否符合要求;

      否则只会检验 houses 的集合大小是否大于1,不会校验集合中的 House 对象,比如 House 对象的 name 长度是否符合要求。 

    class Man{
    
        @Valid
        @Size(min = 1)
        private List<House> houses;
    }
    
    class House{
    
        @Length(min = 1,max = 10)
        private String name;
    }
  • 相关阅读:
    20个设计精致的用户界面 PSD 源文件免费下载
    Mergely – 免费的在线文档对比和合并工具
    你应该知道的10个奇特的 HTML5 单页网站
    One Page Scroll – 实现苹果风格的单页滚动效果
    学习如何制作 404 错误页面的15个最佳案例
    Rainyday.js – 傻眼了!竟然有如此逼真的雨滴效果
    Lo-Dash – 替代 Underscore 的优秀 JS 工具库
    30个实用的 Photoshop 动作《免费下载》
    Wrangle – 响应式的,触摸友好的多选插件
    经典案例:那些让人赞不绝口的创新 HTML5 网站
  • 原文地址:https://www.cnblogs.com/virgosnail/p/11556979.html
Copyright © 2011-2022 走看看