使用@Pattern@Validated校验 并抛出异常

基类里的属性
regexp 是正则表达式
一般默认就填入正则表达式即可,但是java中字符串需要转义,这个需要注意一下。

@valid和@validated:

@Validated是@Valid 的一次封装,是Spring提供的校验机制使用。@Valid不提供分组功能

基类

    /** 标识码 */
    @Pattern(regexp = "^\\d{11}$",message = "mis只能由数字组成")
    @ApiModelProperty("标识码")
    private String mis;

控制层

在传参或者controller层中的添加@Validated注解进行调用,我这里是在控制层添加
控制层加上@Validated 然后在参数上面加@Valid

@RestController
@Validated
@RequestMapping("/simReserve")
public class SimReserveController{
   @RequestMapping("/import")
    public ActionResult save(@Valid User user){
     ........
    }
    
  //如果mis不符合正则表达式  本来回在idea的控制台抛出异常,现在我手动在控制层捕获了异常并返回异常信息 
  @ExceptionHandler(value = ConstraintViolationException.class)
    public ResponseEntity validationBodyException(ConstraintViolationException exception){
       // 捕获到Exception异常  并抛出
        return ResponseEntity.ok(exception.getMessage());
    }
}

我这里是Controller局部异常处理,@Validated引起的ConstraintViolationException 好像不能全局抛出

全局的话要注意,异常类要和启动类在同一包下
如:

@RestControllerAdvice
public class BingExceptionHandler {
    @ExceptionHandler(value = ConstraintViolationException.class)
    @ResponseStatus(code = HttpStatus.BAD_REQUEST)
    public ResponseEntity validationBodyException(ConstraintViolationException exception){
        // logger.error("捕获到Exception异常",exception);
        return ResponseEntity.ok(exception.getMessage());
    }
}

在这里插入图片描述

详情参考:Spring中的统一异常处理方式

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值