Spring Boot 使用 @Valid 校验前端传递的参数
Spring Boot Java 大约 2160 字@Valid
使用@Valid
注解标注的参数,可直接配置校验注解拦截请求。
@NotNull
:字段不能为空。@NotBlank
:字段不能为空或空白字符。@NotEmpty
:字段不能为空或数量为零。(字符长度、集合大小、map
大小、数组长度不能为零)@Size
:字段元素大小范围。(null
也视为有效元素)@Null
:字段必须为空。@Min
:字段最小值。(不适用double
和float
)@Max
:字段最大值。(不适用double
和float
)@Range
:字段范围。(@Min
和@Max
结合)@Length
:字段长度范围。@Email
:字段必须符合Email
格式。@AssertTrue
:推断是否正确。
嵌套对象的校验
例:UserVo
中的Info
对象必须加上@Valid
注解才能校验Info
对象中添加的校验规则。
两个字段联合校验
多个字段联合校验,可在Bean
类中定义isValid()
方法,结合@AssertTrue
注解,Spring
框架将自动调用isValid()
方法,根据自定义条件校验。
例子
@Data
@Builder
public class UserVo {
@NotBlank(message = "用户名不能为空")
@Length(min = 3, max = 8, message = "长度不正确")
private String name;
@Min(value = 0, message = "年龄最小0")
@Max(value = 120, message = "年龄最大120")
private int age;
@Email(message = "邮件格式不正确")
@NotBlank(message = "邮件不能为空")
private String email;
@Negative(message = "只能负数")
private int negative;
@Positive(message = "只能正数")
private int positive;
@NegativeOrZero(message = "只能负数或0")
private int negativeOrZero;
@PositiveOrZero(message = "只能正数或0")
private int positiveOrZero;
// 级联对象必须不能为空和加@Vaid才能验证
@Valid
@NotNull(message = "信息不能为空")
private Info info;
}
@Data
@Builder
public class Info {
@Range(min = 0, max = 100, message = "数值1不在正确范围")
private int integer1;
@Range(min = 0, max = 100, message = "数值2不在正确范围")
private int integer2;
@NotNull(message = "爱好不能为空")
@Size(min = 1, max =3, message = "爱好个数不正确")
private List<String> hobbies;
@NotNull(message = "技能不能为空")
@Size(min = 1, max =3, message = "技能个数不正确") // 过滤相同,必须是1~3个不同的才符合规则
private Set<String> skills;
@AssertTrue(message = "integer1必须小于integer2")
public boolean isValid() {
return this.integer1 < this.integer2;
}
}
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@PostMapping("/test")
public String test(@Valid @RequestBody UserVo userVo) {
return "ok";
}
}
代码
https://github.com/fendoudebb/learning/tree/master/java/learn-spring-boot/valid
阅读 5144 · 发布于 2020-05-15
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓
昵称:
随便看看
换一批
-
Spring Boot OpenFeign 动态切换 Url 报错解决方法阅读 855
-
SSH 客户端工具阅读 580
-
Spring Boot 返回值额外增加了一些字段阅读 639
-
Nginx 日志按天生成阅读 9697
-
GoJS 给右键菜单中的按钮添加分割线阅读 1555
-
Oracle 两种连接模式 thin 与 oci 的区别阅读 4131
-
PHP查看配置文件所在位置阅读 1583
-
Notepad++ 保存 Ctrl-S 显示 DC3 ,搜索 Ctrl-F 显示 ACK 解决办法阅读 7782
-
传统网页集成 Keycloak 作为 OAuth2 的 Client 客户端阅读 254
-
Linux 安装运行 Keepalived阅读 2257