数据校验的总结

业务层进行复杂检查

简单校验交给Controller校验,能流到业务的层的数据就是基本合法

引入依赖:spring-boot-starter-validation

能标注的所有注解在这两个地方看

jakarta.validation.constraints、

org.hibernate.validator.constraints

使用步骤:先在dto实体类,给各个属性标记上注解@Email

然后在Controller的参数上放上@Valid或@Validated(更推荐,因为Validated多了分组校验)

这样做完之后就可以完成校验,但是还是不能返回前端message里的信息

所以可以在参数后面加一个BingdingResult,就可以返回更完整的校验信息。(如果想校验哪个参数,就在后面加BingdingResult,而不是放最后)。

如果开启了BingdingResult。一旦写了BingdingResult就会封装在BingdingResult中不会抛出异常,前端就不会看到错误,只会收到200。就需要手动处理校验错误

@Validated支持分组功能,对不同请求实现不同的验证逻辑。

实现的话就是定义不同的接口,也就是不同的分组。然后在@Validated的属性里指定不同的验证组即可。

相关推荐
aniden3 分钟前
Swagger从入门到实战
java·开发语言·spring
泥嚎泥嚎7 分钟前
【Android】给App添加启动画面——SplashScreen
android·java
Java天梯之路11 分钟前
09 Java 异常处理
java·后端
玖剹11 分钟前
多线程编程:从日志到单例模式全解析
java·linux·c语言·c++·ubuntu·单例模式·策略模式
一 乐13 分钟前
社区养老保障|智慧养老|基于springboot+小程序社区养老保障系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
emma羊羊19 分钟前
【PHP反序列化】css夺旗赛
开发语言·网络安全·php
随机昵称_12345623 分钟前
Linux如何从docker hub下载arm镜像
java·linux·arm开发·docker
threelab33 分钟前
Merge3D:重塑三维可视化体验的 Cesium+Three.js 融合引擎
开发语言·javascript·3d
liu****34 分钟前
16.udp_socket(三)
linux·开发语言·数据结构·c++·1024程序员节
长不大的蜡笔小新40 分钟前
掌握NumPy:ndarray核心特性与创建
开发语言·python·numpy