public class User{
@NotBlank(message="姓名不允许为空!")
@Length(min=2,max=10,message="姓名长度错误,姓名长度2-10!")
private String name;
@NotNull(message="年龄不能为空!")
@Min(18)
private int age;
@NotBlank(message="地址不能为空!")
private String address;
@Pattern(regexp="^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$",message="手机号格式错误")
private String phone;
@Email(message="邮箱格式错误!")
private String email;
//省略get和set方法
}
在上面的示例中,每个注解中的属性message是数据校验不通过时要给出的提示信息。
然后添加数据校验方法:
@PostMapping(path="/check")
public String check(@RequestBody @Valid User user, BindingResult result){
String name=user.getName();
if(result.hasErrors()){
List<ObjectError> list = result.getAllErrors();
for (ObjectError error : list){
System.out.println(error.getCode()+"_"+error.getDefaultMessage());
}
}
return name;
}
在上面的示例中,在@RequestBody注解后面添加了@Valid注解,然后在后面添加了BindingResult返回验证结果,BindingResult是验证不通过时的结果集合。
注意,BindingResult必须跟在被校验参数之后,若被校验参数之后没有BindingResult对象,则会抛出BindException。
最后,运行验证。
启动项目,在postman中请求/user/check接口,后台输出了数据验证的结果:
Length-密码长度错误,密码长度6-20!
Min-最小不能小于18
Length-姓名长度错误,姓名长度2-10!
通过上面的输出可以看到,应用系统对传入的数据进行了校验,同时也返回了对应的数据验证结果。