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 数据库连接
【hibernate validator】(五)分组约束
【hibernate validator】(五)分组约束
|
7月前
|
Java 数据库 数据安全/隐私保护
【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制
【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制
688 1
|
6月前
|
Java Spring 容器
详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)
详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)
|
7月前
使用Hibernate-Validate进行参数校验
使用Hibernate-Validate进行参数校验
83 3
|
前端开发 Java 数据库
Spring Entity数据校验,分组校验,返回校验结果给前端
Spring Entity数据校验,分组校验,返回校验结果给前端
104 0
|
Java 数据库连接
hibernate-validator校验对象属性为List
hibernate-validator校验对象属性为List
207 1
|
前端开发 Java 数据库
SpringBoot分组校验及自定义校验注解
在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性。在此之前写过一篇SpringBoot统一参数校验主要介绍了一些简单的校验方法。而这篇则是介绍一些进阶的校验方式。比如说:在某个接口编写的过程中肯定会遇到,当xxType值为A,paramA值必传。xxType值为B,paramB值必须传。对于这样的,通常的做法就是在controller加上各种if判断。显然这样的代码是不够优雅的,而分组校验及自定义参数校验,就是来解决这个问题的。
分组校验和自定义校验
分组校验和自定义校验
97 0
|
JSON Java 数据格式
hibernate-validator校验参数(统一异常处理)(下)
hibernate-validator校验参数(统一异常处理)
hibernate-validator校验参数(统一异常处理)(下)