数据校验的总结

业务层进行复杂检查

简单校验交给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的属性里指定不同的验证组即可。

相关推荐
用户46825574591310 小时前
Testcontainers 在 Windows Docker Desktop 上跑不通:协议层不兼容 + 4 种可行环境
java·后端
KWTXX10 小时前
测试工具-论文 MATLAB 仿真复现【成功】
开发语言·matlab
程序猿小三10 小时前
福建省第一届“闽盾杯“网络安全职业技能竞赛 — 备赛学习路线
开发语言·网络安全·php
数据知道10 小时前
视觉伪装(上):Canvas 指纹生成原理与 Skia 图形库底层注入噪声
开发语言·javascript·ecmascript·数据采集·指纹浏览器
聆春烟雨簌簌10 小时前
LangChain4j使用文档
开发语言·python
程序员小羊!10 小时前
12.Java 多线程编程
java·开发语言
xuhaoyu_cpp_java10 小时前
项目学习(三)代码生成器
java·经验分享·笔记·学习
乐观勇敢坚强的老彭10 小时前
C++信息学奥赛lesson1
java·开发语言·c++
San813_LDD10 小时前
[深度学习] 数据序列化格式对比:以日志级别配置为例
xml·java·前端
jllllyuz10 小时前
MATLAB实现滚动轴承故障诊断(外圈故障)
开发语言·人工智能·matlab