JSR303数据校验
作者:互联网
相关注解位于
package javax.validation.constraints;
1.给字段添加注解
2.通知springmvc需要校验
3.给校验的bean后紧跟一个BindResult,就可以获取校验的结果
可以根据结果判断
效果:
小案例
统一异常
问题:每一个controller方法都要写校验代码
@ControllerAdvice
1、状态码枚举类
/** * 状态码 * @author 江南大学1033190417 * @date 2022/6/7 0:18 */ /** * 错误码和错误信息定义类 * 1. 错误码定义规则为5为数字 * 2. 前两位表示业务场景,最后三位表示错误码。例如:100001。10:通用 001:系统未知异常 * 3. 维护错误码后需要维护错误描述,将他们定义为枚举形式 * 错误码列表: * 10: 通用 * 001:参数格式校验 * 11: 商品 * 12: 订单 * 13: 购物车 * 14: 物流 * * */ public enum BizCodeEnum { UKOWN_EXCEPTION(10000,"系统位置异常"), VALID_EXCEPTION(10001,"参数格式校验失败"); private Integer code; private String msg; BizCodeEnum(Integer code,String msg){ this.code=code; this.msg=msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
2、统一异常处理类
import com.atguigu.common.exception.BizCodeEnum; import com.atguigu.common.utils.R; import lombok.extern.slf4j.Slf4j; import org.bouncycastle.crypto.ec.ECElGamalDecryptor; import org.springframework.validation.BindingResult; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.HashMap; import java.util.Map; /** * 几种处理所有异常 * * @author 江南大学1033190417 * @date 2022/6/7 0:04 */ @Slf4j @ResponseBody @ControllerAdvice(basePackages = "com.atguigu.gulimall.product.controller") //@RestControllerAdvice可以替换上面两个 public class GulimallExceptionControllerAdvice { //处理数据校验异常 @ExceptionHandler(value = MethodArgumentNotValidException.class) public R handleValidException(MethodArgumentNotValidException e){ log.error("数据校验出现问题{},异常类型{}",e.getMessage(),e.getClass()); BindingResult result = e.getBindingResult(); Map<String,Object> map=new HashMap<>(); result.getFieldErrors().forEach((item)->{ String message = item.getDefaultMessage();//错误信息 String field = item.getField();//错误字段 map.put(field,message); }); return R.error(BizCodeEnum.VALID_EXCEPTION.getCode(),BizCodeEnum.VALID_EXCEPTION.getMsg()).put("data",map); } //处理其他异常 @ExceptionHandler(value = Throwable.class) public R handleException(Throwable throwable){ return R.error(BizCodeEnum.UKOWN_EXCEPTION.getCode(), BizCodeEnum.UKOWN_EXCEPTION.getMsg()); } }
标签:BizCodeEnum,JSR303,校验,springframework,import,org,数据,public 来源: https://www.cnblogs.com/msboke/p/16350300.html