导入相应的坐标
<!--jsr 303-->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<!-- hibernate validator-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.0.Final</version>
</dependency>
实体类
@Data
public class UserInfo {
@NotNull(groups = {GroupA.class}, message = "用户id不能为空")
private Integer uid;
@NotBlank(message = "用户名不能为空")
@Length(max = 15, message = "用户名不能超过20个字符")
@Pattern(regexp = "^[\u4E00-\u9FA5A-Za-z0-9\*]*$", message = "用户昵称限制:最多20字符,包含文字、字母和数字")
private String name;
@NotBlank(groups = {GroupB.class}, message = "性别不能为空")
private String gender;
@NotBlank(message = "手机号不能为空")
@Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$", message = "手机号格式有误")
private String phone;
@NotEmpty
private List<Hobby> hobbies;
}
分组
对不同的controller 接收的参数做处理,有分组标识的才会进行校验
public interface GroupA {
}
接收异常
BindingResult bindingResult
public String setUser(@RequestBody @Validated({ GroupB.class}) UserInfo user, BindingResult bindingResult) {
private void validData(BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
StringBuffer sb = new StringBuffer();
for (ObjectError error : bindingResult.getAllErrors()) {
sb.append(error.getDefaultMessage());
}
throw new ValidationException(sb.toString());
}
}
使用
@RestController
public class ValidController {
@PostMapping("/getUser")
public String getUserInfo(@RequestBody @Validated({GroupA.class, Default.class}) UserInfo userInfo, BindingResult bindingResult) {
validData(bindingResult);
return "success" + userInfo.toString();
}
@PostMapping("/setUser")
public String setUser(@RequestBody @Validated({ GroupB.class}) UserInfo user, BindingResult bindingResult) {
validData(bindingResult);
return "name: " + user.getName() + ", phone:" + user.getPhone();
}
private void validData(BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
StringBuffer sb = new StringBuffer();
for (ObjectError error : bindingResult.getAllErrors()) {
sb.append(error.getDefaultMessage());
}
throw new ValidationException(sb.toString());
}
}
}