实用boot validation


1:增加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

2:相应实体类上增加验证注解
/**
* @author zs
* @date 2019/7/28
*/
public class User {
private long id;
@NotEmpty(message = "用户名不能为空")
private String name;
private String cardNumber;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCardNumber() {
return cardNumber;
}

public void setCardNumber(String cardNumber) {
this.cardNumber = cardNumber;
}

@Override
public String
toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", cardNumber='" + cardNumber + '\'' +
'}';
}
}


3:控制层的验证
@PostMapping("/user/save")
public User save(@Valid @RequestBody User user) throws Exception {
System.out.println(user.getName());
return user;

}

4:对于错误的捕捉

@ControllerAdvice
public class ExecptionHandler {

public static final Logger logger = LoggerFactory.getLogger(ExecptionHandler.class);

@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result handler(Exception e){
if (e instanceof AppException ){
AppException exception = (AppException) e;
return new Result(((AppException) e).getCode(), ((AppException) e).getMsg());
}else if (e.getClass().equals(MethodArgumentNotValidException.class)){
MethodArgumentNotValidException e1 = (MethodArgumentNotValidException) e;
BindingResult bindingResult =e1.getBindingResult();
String errorMesssage = "校验失败:";

for (FieldError fieldError : bindingResult.getFieldErrors()) {
errorMesssage += fieldError.getDefaultMessage() + ", ";
}

return new Result(400, errorMesssage);
}else{
e.printStackTrace();
System.out.println("==========================");
logger.error("[系统异常]{}", ExceptionUtils.unwrapInvocationTargetException(e));
return Result.BuildError(ValiException.SERVER_ERROR);
}

}

至此,可以返回自定义的Result
附上Result的domain



package com.gupao.demovalidation.apiException;

/**
* @author zs
* @date 2019/7/28
*/
public class Result {
private int code;
private Object data;
private String msg;

public int getCode() {
return code;
}

public void setCode(int code) {
this.code = code;
}

public Object getData() {
return data;
}

public void setData(Object data) {
this.data = data;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public Result(int code, String msg) {
this.code = code;
this.msg = msg;
}

public static Result BuildError(IApiError iApiError){
return new Result(iApiError.getCode(),iApiError.getMsg());
}
}


猜你喜欢

转载自www.cnblogs.com/senjiang/p/11261675.html