JSR303分组校验和自定义校验注解

本文介绍了JSR303在Bean属性上的校验注解应用,如何自定义校验注解以及分组校验的实现。通过在Controller中使用@Valid开启校验,利用BindingResult获取并处理校验结果。分组校验用于处理复杂场景的校验需求,通过指定校验注解生效的分组。同时,文章详细讲解了自定义校验注解的步骤,包括引入依赖、创建注解、配置验证消息文件以及编写验证器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、给Bean属性添加校验注解:javax.validation.constraints,并定义自己的message提示
2、在Controller方法参数贴上@Valid注解开启校验功能
3、BindingResult可以获取到校验的结果,编写异常处理类使用@RestControllerAdvice、@ExceptionHandler标注方法处理校验异常

import com.atguigu.common.exception.BizCodeEnume;
import com.atguigu.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;

/**
 * 集中处理所有异常
 */
@Slf4j
@RestControllerAdvice(basePackages = "com.atguigu.gulimall.product.controller")
public class GulimallExceptionControllerAdvice {
   
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public R handleValidException(MethodArgumentNotValidException e){
   
        log.error("数据校验出现的问题:{},异常类型:{}",e.getMessage(),e.getClass());
        BindingResult bindingResult = e.getBindingResult();
        Map<String,String> errorMap = new HashMap<>();
        bindingResult.getFieldErrors().forEach(fieldError 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值