java validation validator 验证器
实体字段校验 @NotNull、@NotEmpty、@NotBlank
1.@NotNull
不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制
2.@NotEmpty
不能为 null,且长度必须大于 0,一般用在集合类上或者数组上
3.@NotBlank
只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:必须有实际字符
注意在使用 @NotBlank 等注解时,一定要和 @valid 一起使用,否则 @NotBlank 不起作用。
一个 BigDecimal 的字段使用字段校验标签应该为 @NotNull。
在使用 @Length 一般用在 String 类型上可对字段数值进行最大长度限制的控制。
在使用 @Range 一般用在 Integer 类型上可对字段数值进行大小范围的控制。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @RequestMapping ( "/hello" ) @RestController @Api (tags = "HelloWorld 入口" ) public class HelloWorld { @GetMapping ( "/world" ) @ApiOperation (value = "helloWorld" ) public String helloWorld() { return "hello world!" ; } @PostMapping ( "/test/param" ) @ApiOperation (value = "testParam" ) public BaseResponse<String> testParam( @Valid @RequestBody BaseRequest baseRequest ) { return BaseResponse.successResponse( "参数校验成功" ); } @ApiOperation (value = "testOrderParam" ) @PostMapping ( "/test/order" ) public BaseResponse<String> testOrderParam( @Validated @RequestBody OrderRequest baseRequest ) { return BaseResponse.successResponse( "参数校验成功" ); } } |
总结一下 @Validated 和 @Valid 在嵌套验证功能上的区别:
@Validated: 用在方法入参上无法单独提供嵌套验证功能。不能用在成员属性(字段)上,也无法提示框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。
@Valid: 用在方法入参上无法单独提供嵌套验证功能。能够用在成员属性(字段)上,提示验证框架进行嵌套验证。能配合嵌套验证注解@Valid进行嵌套验证。
Bean Validation规范中包含的22个注解,也就是validation-api(jakarta.validation-api)实现的注解:
每个注解都有message,groups,payload这三个属性,这是Bean Validation规范的要求。下表还列出了每个注解自有的一些属性。
hibernate-validator
额外实现的注解:
注解的可以到org.hibernate.validator.constraints包下面自行查看,这里仅列举几个常用的注解。
校验实现可以到org.hibernate.validator.internal.constraintvalidators包下面自行查看。其中bv包下是对javax.validation下注解的实现,hv包下是对org.hibernate.validator下注解的实现。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库