【SpringBoot】数据校验之JavaBean参数校验

发布于:2024-08-02 ⋅ 阅读:(57) ⋅ 点赞:(0)

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!

通过上面的输出可以看到,应用系统对传入的数据进行了校验,同时也返回了对应的数据验证结果。