validator分组校验

简介: validator分组校验

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

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

今天进行一个补充

我们可以使用分组校验

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

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

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

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

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

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

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);
        }
    }
}
相关文章
|
Java 数据安全/隐私保护
SpringBoot - 优雅的实现【参数分组校验】高级进阶
SpringBoot - 优雅的实现【参数分组校验】高级进阶
507 0
fbh
|
关系型数据库 MySQL 数据库
mysql数据库执行mysqladmin flush-hosts方法
当连接错误次数过多时,mysql会禁止客户机连接,这个时候有两个办法解决: 1.使用mysqladmin flush-hosts命令清除缓存,命令执行方法如下: 命令行或终端:mysqladmin  -u  root  -p  flush-hosts 接着输入root账号密码即可   2.
fbh
7744 0
|
15天前
|
人工智能 自然语言处理 前端开发
一句话画出整张架构图?这款 2k star 开源 AI 画板,真能帮你告别熬夜改流程图吗?
小华同学推荐:Smart Excalidraw,用自然语言一键生成专业图表!基于AI+Excalidraw,支持20+图表类型,自动生成流程图、架构图等,告别手动排版。开源免费,可本地部署,适配团队协作与个人使用,让画图回归“说人话”。
197 0
|
Java UED Spring
Springboot通过SSE实现实时消息返回
通过Spring Boot实现SSE,可以简单高效地将实时消息推送给客户端。虽然SSE有其限制,但对于许多实时消息推送场景而言,它提供了一种简洁而强大的解决方案。在实际开发中,根据具体需求选择合适的技术,可以提高系统的性能和用户体验。希望本文能帮助你深入理解Spring Boot中SSE的实现和应用。
5917 1
|
负载均衡 Java 网络架构
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
实现微服务网关:Zuul与Spring Cloud Gateway的比较分析
812 5
|
存储 Kubernetes 微服务
kubernetes简介-这是一篇学习k8s必看的文章
kubernetes简介-这是一篇学习k8s必看的文章
|
供应链 监控 数据挖掘
ERP系统中的采购管理与供应商评估
【7月更文挑战第25天】 ERP系统中的采购管理与供应商评估
1061 3
|
存储 缓存 NoSQL
SpringBoot配置第三方专业缓存框架j2cache
SpringBoot配置第三方专业缓存框架j2cache
511 5
|
存储 Ubuntu Linux
Docker容器简介、优缺点与安装
Docker容器简介、优缺点与安装
|
Java
Error:(15, 13) java: No property named “id” exists in source parameter(s). Did you mean “null”?
Error:(15, 13) java: No property named “id” exists in source parameter(s). Did you mean “null”?
548 1

热门文章

最新文章