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;
}

Java 注解方式校验请求参数的更多相关文章

  1. Java Spring Controller 获取请求参数的几种方法

    技术交流群:233513714  1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"=& ...

  2. hibernate.validator.constraints.NotEmpty校验请求参数报错java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException

    spring maven项目,使用hibernate validator 注解形式校验客户端的请求参数. hibernate-validator版本:5.0.2.Final validation-ap ...

  3. SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径

    @RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类 1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求: 2 ...

  4. 限制action所接受的请求方式或请求参数

    原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...

  5. SpringMVC的controller方法中注解方式传List参数使用@RequestBody

    在SpringMVC控制器方法中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解: //创建文件夹 @RequestMapping(value ...

  6. spring的Java注解方式

    以往我们在使用spring的时候都是用一堆<>这个玩意(尖括号)的xml文件来配置spring,在xml里都是"xxx"来配置需要的内容信息,在"" ...

  7. 注解@RequestParam——取请求参数

    一.创建index.jsp 创建一个用来发送请求的测试jsp <a href="springMVC/testRequestParam?username=lzj&age=20&q ...

  8. Spring MVC的各种参数绑定方式(请求参数用基础类型和包装类型的区别)(转)

    1.基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int cou ...

  9. java工具类-接受请求参数,并利用反射调用方法

    public String a(HttpServletRequest request,HttpServletResponse response) throws JSONException, IOExc ...

随机推荐

  1. telnet命令测试端口连接是否正常, telnet不是内部或外部命令的方案

    telnet ip地址 端口 1.点击开始 → 运行 → 输入CMD,回车.2.在DOS界面里,输入telnet测试端口命令:   telnet IP 端口  或  telnet 域名 端口,回车. ...

  2. 在python中,用默认参数(list,set,dict...)时要小心

    在我们平时写需求的时候,如果没有了解到以下知识点,可能会出现这样的问题,掉进坑里面,甚至很难找到问题的根源.下面我们来看看使用可变默认参数(Mutable default arguments)时会出现 ...

  3. IPC之shm.c源码解读

    // SPDX-License-Identifier: GPL-2.0 /* * linux/ipc/shm.c * Copyright (C) 1992, 1993 Krishna Balasubr ...

  4. 生成静态libevent

    INCLUDE C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include D:\vs2013\VC\include LIB C:\Prog ...

  5. 【算法学习笔记】RMQ问题与ST表

    \(0.\) RMQ问题 P1816 人话翻译 给定一个长度为\(n\)的数列\(a\),然后有\(m\)组询问,每次询问一个区间\([l,r]\)的最小值. 其中\(m,n\leq10^5\) \( ...

  6. Web应用界面好帮手!DevExtreme React和Vue组件全新功能上线

    行业领先的.NET界面控件DevExpress 正式发布了v19.1版本,本文将主要介绍DevExtremev19.1中React组件响应式应用程序布局模板及CLI工具.本地React图表,和Vue组 ...

  7. puppet完全攻略(一)puppet应用原理及安装部署

    puppet完全攻略(一)puppet应用原理及安装部署 2012-06-06 18:27:56 标签:puppet puppet应用原理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出 ...

  8. linux命令集锦 基于centos7---优化linux的命令

    sed -i ‘s###g’ /etc/selinux/config  3个# 用于更改selinux配置文件:sed -i 's#SELINUX=enforcing#SELINUX=disabled ...

  9. BZOJ 1420: Discrete Root (原根+BSGS)

    题意 已知kkk, aaa, ppp. 求 xk≡a (mod p)x^k\equiv a\ (mod\ p)xk≡a (mod p) 的所有根. 根的范围[0,p−1][0,p-1][0,p−1]. ...

  10. springboot与springcloud版本不对应导致报错java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V

    springboot启动报错: 10:31:50.221 [main] ERROR org.springframework.boot.SpringApplication - Application r ...