前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >validator分组校验

validator分组校验

作者头像
阿超
发布2022-08-16 17:30:42
7660
发布2022-08-16 17:30:42
举报
文章被收录于专栏:快乐阿超

当生活像一首歌那样轻快流畅时,笑颜常开乃易事;而在一切事都不妙时仍能微笑的人,是真正的乐观。——威尔科克斯

之前写过一篇springboot实现validator校验

今天进行一个补充

我们可以使用分组校验

首先是我们可以定义一个接口在我们的实现类里

image-20201207201407118
image-20201207201407118

然后在我们需要分组校验的注解上给上groups参数

image-20201207201524313
image-20201207201524313

最后在controller上也给我们的@Validated注解加上我们的分组参数

image-20201207201844586
image-20201207201844586

最后运行就只会校验我们分组的参数

那如果有这么一种场景:一个接口,传入Id时修改,不传入Id时新增,修改和新增又是不同的校验的话,我们该怎么处理呢?

其实很简单,我们可以注入一个Validator,然后在代码里进行分组校验

image-20201207202801868
image-20201207202801868
代码语言:javascript
复制
package com.ruben;

import com.ruben.pojo.User;
import com.ruben.utils.SpringContextHolder;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.DependsOn;

import javax.annotation.Resource;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Validator;
import java.util.Objects;
import java.util.Set;

@SpringBootTest
@DependsOn("SpringContextHolder")
class SimpleSpringbootApplicationTests {

    @Resource
    private Validator validator;

    @Test
    void test() {
        User user = User.builder().build();
        // 校验结果
        Set<ConstraintViolation<User>> checkResult;
        if (Objects.isNull(user.getId())) {
            // id为空,新增校验
            checkResult = validator.validate(user, User.AddCheck.class);
        } else {
            // id不为空,修改校验
            checkResult = validator.validate(user, User.UpdateCheck.class);
        }
        if (!checkResult.isEmpty()) {
            // 这里可以抛异常,让全局异常处理器去处理我们的异常
            throw new ConstraintViolationException(checkResult);
        }
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档