注册登录 - BO接受前端参数验证
@PostMapping("login") //Valid 校验
public GraceJSONResult login(@Valid @RequestBody RegistLoginBO registLoginBO,
//BindingResult result, //对代码有侵入性,放到 GraceExceptionHandler
HttpServletRequest request) throws Exception {
return GraceJSONResult.ok();
}
@ControllerAdvice // 在Spring Boot中,可以使用@ControllerAdvice注解来创建全局异常处理类,以便统一处理不同控制器中抛出的异常。
public class GraceExceptionHandler {
// 校验不通过异常与拦截器整合返回json对象, 方法参数校验不通过
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseBody
public GraceJSONResult returnMethodArgumentNotValidException(MethodArgumentNotValidException e){
// e.printStackTrace();
BindingResult result = e.getBindingResult();
Map<String,String> map = getErrors(result);
return GraceJSONResult.errorMap(map);
}
public Map<String, String> getErrors(BindingResult result) {
Map<String, String> map = new HashMap<>();
List<FieldError> errorList = result.getFieldErrors();
for (FieldError ff : errorList) {
//错误所对应的属性字段名
String field = ff.getField();
//错误的信息
String msg = ff.getDefaultMessage();
map.put(field, msg);
}
return map;
}
}
pom.xm 引入 hibernate
<!-- 引入hibernate 校验-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
创建 RegistLoginBO
// BO = Bussniss object 业务object
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RegistLoginBO {
@NotBlank(message = "手机号不能为空")
@Length(min = 11 , max = 11, message = "手机号长度不正确")
private String mobile;
@NotBlank(message = "验证码不能为空")
private String verifyCode;
}