Spring参数注解,支持数组入参(List)校验

Spring参数注解,支持数组入参(List)校验

1、controller类增加@Validated注解,对应的数组参数增加@Valid注解。

javascript 复制代码
@Validated
@RestController
@RequestMapping("/parent")
public class ParentController {

  private FatherRepository fatherRepository;

  /**
   * DI
   */
  public ParentController(FatherRepository fatherRepository) {
    this.fatherRepository = fatherRepository;
  }

  @PostMapping("/test")
  public void test(@RequestBody @Valid List<Father> fathers) {

  }
}

2、对返回的校验信息异常进行全局捕获,封装后返回。

java 复制代码
@RestControllerAdvice
@Component
public class ControllerExceptionHandler {

  /**
   * handle controller methods parameter validation exceptions
   *
   * @param exception ex
   * @return wrapped result
   */
  @ExceptionHandler
  @ResponseBody
  @ResponseStatus(HttpStatus.OK)
  public DataContainer handle(ConstraintViolationException exception) {

    Set<ConstraintViolation<?>> violations = exception.getConstraintViolations();
    StringBuilder builder = new StringBuilder();
    for (ConstraintViolation<?> violation : violations) {
      builder.append(violation.getMessage());
      break;
    }
    DataContainer container = new DataContainer(CommonCode.PARAMETER_ERROR_CODE, builder.toString());
    return container;
  }
}

参考 https://stackoverflow.com/questions/28150405/validation-of-a-list-of-objects-in-spring

相关推荐
北京_宏哥5 分钟前
《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
java·selenium·前端工程化
刘鹏37812 分钟前
深入浅出Java中的CAS:原理、源码与实战应用
后端
当归102415 分钟前
微服务与消息队列RabbitMQ
java·微服务
Lx35217 分钟前
《从头开始学java,一天一个知识点》之:循环结构:for与while循环的使用场景
java·后端
fliter17 分钟前
RKE1、K3S、RKE2 三大 Kubernetes 发行版的比较
后端
aloha_18 分钟前
mysql 某个客户端主机在短时间内发起了大量失败的连接请求时
后端
程序员爱钓鱼20 分钟前
Go 语言高效连接 SQL Server(MSSQL)数据库实战指南
后端·go·sql server
xjz184220 分钟前
Java AQS(AbstractQueuedSynchronizer)实现原理详解
后端
Victor35620 分钟前
Zookeeper(97)如何在Zookeeper中实现分布式协调?
后端
至暗时刻darkest20 分钟前
go mod文件 项目版本管理
开发语言·后端·golang