Spring Boot 使用 @Valid 校验前端传递的参数
Spring Boot Java About 2,160 words@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
Views: 5,813 · Posted: 2020-05-15
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...