Spring boot字段注解形式格式控制(正则校验),以及拦截后的前端返回代码
注解配置
- 直接在实体类字段上加上注解以拦截
@NotBlank(message = "请输入密码")
@Pattern(regexp = "\\w{6,18}$",message = "账号应为6-18位字符,不含特殊符号,添加失败")
private String userAccount;
@NotBlank(message = "请输入密码")
@Pattern(regexp = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,18}$",message = "账号应为6-18位字符,包含数字和字母,不含特殊符号,添加失败")
private String userPwd;
更多注解参考大佬博文:实体类字段的注解验证
配置拦截成功时的返回信息
- @Valid:表示加入拦截
- BindingResult result:用于格式化返回信息
- returnUnifiedError(result):方法用于处理拦截返回信息
相关代码:
# controller:
@PostMapping("/addNkbUser")
public ResultObject addNkbUser(@Valid @RequestBody NkbUserDTO nkbUserDTO,BindingResult result){
if(result.hasErrors()){
returnUnifiedError(result);
return new ResultObject(StatusCode.ERROR,returnUnifiedError(result));
}
return iNkbUserService.addNkbUser(nkbUserDTO);
}
# 错误处理方法
public String returnUnifiedError(BindingResult bindingResult) {
StringBuilder errorMsg = new StringBuilder();
bindingResult.getAllErrors().stream().forEach(
error -> {
FieldError fieldError = (FieldError) error;
errorMsg.append(fieldError.getDefaultMessage() + ";");
}
);
return errorMsg.toString();
}