使用validation进行校验分组group以及对于不符合校验的处理

本文详细介绍了在Java中如何利用Bean Validation的校验分组功能,实现不同场景下的数据验证,如分组校验group,以及针对校验失败后的错误处理策略,帮助开发者提高代码的健壮性和用户体验。

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

为什么要分组?
案例:在添加时,前端传到后端的对象是没有id值的,
	 而在修改时,前端传到后端时有id值的,那么将无法进行校验,
	 因为你不管规定有值或者无值,另一方必然无法满足	
	 此时,我们需要进行分组即可解决问题
	 
如何定义组:一个组就是一个接口,随便定义

如何分组:1,在属性注解中设置属性groups=接口.class
		2,在方法形参中@Validated(接口.class)
示例:

在这里插入图片描述
在这里插入图片描述

当然,如果我们在形参中设置了分组,那么没有在这个组中的其他校验就不会生效,
所以我们还需要把其他属性的校验一并加入到组中

当不符合校验时,后台会有一个异常,我们的处理可以使用捕获这个异常,然后处理,
返回给前端我们在校验时定义好的message

在这里插入图片描述

package com.sm.qy28.exception;

import com.sm.qy28.common.http.AxiosResult;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
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.List;
import java.util.Map;
//返回json格式
@RestControllerAdvice
public class MyExceptionHander  {
    //捕获这类的异常
    @ExceptionHandler(MethodArgumentNotValidException.class)
    //返回map集合
    public AxiosResult<Map<String,String>> hander(MethodArgumentNotValidException e){
        HashMap<String, String> hashMap = new HashMap<>();
        BindingResult bindingResult = e.getBindingResult();
        //判断是否有错误
        if( bindingResult.hasErrors()){
            //把错误放到集合中
            List<FieldError> fieldErrors = bindingResult.getFieldErrors();
            for (int i = 0; i < fieldErrors.size(); i++) {
                hashMap.put(fieldErrors.get(i).getField(),fieldErrors.get(i).getDefaultMessage());
            }
        }
        return AxiosResult.success(EnumStatus.JIAOYAN_ERROR,hashMap);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值