校验请求对象有妙招

120 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

前端传一个封装好的对象到后端来,以前我们拿到这个对象要把一些对象的值取出来进行判断是否为空等,现在我们只需要在controller层上对传入的对象加上@Validated注解即可省去这些麻烦的操作

1.@Validated

JSR-303的javax.validation.Valid的变体,支持验证组的规范。为便于使用Spring的JSR303支持而设计,但不是JSR303专用的(官方解释) @Validated可以加在类上,方法上,参数上(用的比较多) image.png

2.常用校验字段

@Null 注释的元素必须为null(接受任何类型)

@NotNull 注释的元素不能为null(接受任何类型)

@Min(value) @Max(value) 带注释的元素必须是一个数值,其值必须大于或等于指定的最小值。支持类型:byte、short、int、long及其各自的包装器(不支持double和float,空元素被认为是无效的)

@Size(max,min) 带注释的图元大小必须介于指定的边界(包括)之间

@Past 带注释的元素必须是过去的瞬间、日期或时间

@Future 带注释的元素必须是将来的即时、日期或时间。

@AssertTrue 带注释的元素必须为true @AssertFlase 带注释的元素必须为false

@Pattern(value) 被注释的元素必须符合指定的正则表达式

@Email 被注释的元素必须是电子邮件地址

@NotEmpty 被注释的字符串必须非空

@URL 被注释url是否合法

3.举例

  • 例子1 传一个对象 将@Validdate放在参数上 需要校验的对象

image.png

在获取请求对象时加上@Validdate注释,就可以对对象进行相应的验证(如上面对班级id和班级名称进行非空验证)

image.png

  • 例子2 进一步:若这个对象在不通的请求过程中,对传入的参数验证不通怎么处理呢(例如:比如方法一传入的ClazzVo对象我要求班级id不能为null 但班级名称可以为null,方法二我又要求两个都不能为null)这怎么处理,于是就出现了分组 如下:

image.png

对于 addClazz方法 我要求EntityAddValid.class的参数进行验证 即班级名称和班级信息需要验证 image.png

对于updateClazz方法 则要求班级id要进行验证 image.png

对于EntityAddValid,在代码中这样写就好 就是一个空接口 image.png

4.总结

通过注释进行验证 可以减少我们在后端业务层进行参数的认证 可以给我们带来方便 简化代码 开发效率更高,