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;
}
Java 注解方式校验请求参数的更多相关文章
- Java Spring Controller 获取请求参数的几种方法
技术交流群:233513714 1.直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交.若"Content-Type"=& ...
- hibernate.validator.constraints.NotEmpty校验请求参数报错java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException
spring maven项目,使用hibernate validator 注解形式校验客户端的请求参数. hibernate-validator版本:5.0.2.Final validation-ap ...
- SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径
@RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类 1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求: 2 ...
- 限制action所接受的请求方式或请求参数
原文:http://www.cnblogs.com/liukemng/p/3726897.html 2.限制action所接受的请求方式(get或post): 之前我们在HelloWorldContr ...
- SpringMVC的controller方法中注解方式传List参数使用@RequestBody
在SpringMVC控制器方法中使用注解方式传List类型的参数时,要使用@RequestBody注解而不是@RequestParam注解: //创建文件夹 @RequestMapping(value ...
- spring的Java注解方式
以往我们在使用spring的时候都是用一堆<>这个玩意(尖括号)的xml文件来配置spring,在xml里都是"xxx"来配置需要的内容信息,在"" ...
- 注解@RequestParam——取请求参数
一.创建index.jsp 创建一个用来发送请求的测试jsp <a href="springMVC/testRequestParam?username=lzj&age=20&q ...
- Spring MVC的各种参数绑定方式(请求参数用基础类型和包装类型的区别)(转)
1.基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int cou ...
- java工具类-接受请求参数,并利用反射调用方法
public String a(HttpServletRequest request,HttpServletResponse response) throws JSONException, IOExc ...
随机推荐
- 谷歌浏览器禁用JS步骤
前奏: 当你想访问一个页面,因为不符合访问条件,而被JS阻拦:或者你打开的页面特效太多,干扰视线:亦或者JS的某个功能禁止了你的某些行为: 是不是很难受, 好办,咱给他禁了不就好啦,大胆地屏蔽它,不管 ...
- javascript中对编码的解读
首先来一下js知识的巩固与复习 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,deco ...
- element-ui 表格可编辑添加删除
<template> <div id="Cold_all"> <div class="Cold_Left"> <el- ...
- ubuntu根目录下空间不足,syslog占用很大空间,如何清理?
一激动差点儿删除,以下清理方式是对的 cat /dev/null > /var/log/syslog
- JavaWeb【七、JSP状态管理】
http协议无状态性 当提交请求,服务器返回响应.但当同一用户同一浏览器再次提交请求,服务器并不知道与刚才的请求是同一用户浏览器发起. 保存用户状态的两大机制 Session-保存在服务器端 Cook ...
- 查询表中列转换为json
DECLARE @sql VARCHAR(MAX) SET @sql= (SELECT (select '+'',"'+column_name+'":"''+CAST(' ...
- SpringData JPA 在解析实体类字段时驼峰自动添加下划线问题
参考地址:https://my.oschina.net/javamaster/blog/2246886 SpringData JPA 使用的默认命名策略是: ImprovedNamingStrateg ...
- NoSQL数据库技术实战-第1章 NoSQL与大数据简介 NoSQL数据库的类型
键值存储数据库临时性:如Memcached.临时性的键值数据库把数据存储在内存中,在两种情况下会造成上数据的丢失,一是断电,而是数据内容超出内存大小.这种处理的好处是非常快.永久型:如Tokyo Ty ...
- Vue双向绑定的实现原理系列(四):补充指令解析器compile
补充指令解析器compile github源码 补充下HTML节点类型的知识: 元素节点 Node.ELEMENT_NODE(1) 属性节点 Node.ATTRIBUTE_NODE(2) 文本节点 N ...
- React组件:Dragact 0.1.4发布
Dragact 是一款React组件,他能够使你简单.快速的构建出一款强大的 拖拽式网格(grid)布局. 仓库地址:Dragact 经过几天的迭代时间Dragact已经能够支持自由缩放功能了(res ...