• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

三木筒子

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

实用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());
}
}


如有错误,请邮件zs253499660@sina.com,如有更好的方法,可以推荐

posted on 2019-07-29 00:39  森酱  阅读(152)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3