广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用@Valid 校验嵌套对象
  • 848
分享到

使用@Valid 校验嵌套对象

2024-04-02 19:04:59 848人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录@Valid 校验嵌套对象@Valid 嵌套对象验证不成功@Valid 校验嵌套对象 参考网上的博客:ValidList 能校验list。 通过测试发现,@Valid只能校验一层

@Valid 校验嵌套对象

参考网上的博客:ValidList 能校验list。

通过测试发现,@Valid只能校验一层。比如我这里有个person对象,里面有个ValidList<Teacher> 属性,Teacher对象里面有个List<Student> 属性。

如果在Controller层加上@Valid 是校验不到ValidList<Student> 属性的。

需要在List<Teacher> 属性前面加上 List<@Valid Teacher>

沾点代码:


package com.xiaoming.entity; 
import javax.validation.Valid;
import java.util.*; 
public class ValidList<E> implements List<E> { 
    @Valid
    private List<E> list = new ArrayList<>();
 
    @Override
    public int size() {
        return list.size();
    }
 
    @Override
    public boolean isEmpty() {
        return list.isEmpty();
    }
 
    @Override
    public boolean contains(Object o) {
        return list.contains(o);
    }
 
    @Override
    public Iterator<E> iterator() {
        return list.iterator();
    }
 
    @Override
    public Object[] toArray() {
        return list.toArray();
    }
 
    @Override
    public <T> T[] toArray(T[] a) {
        return list.toArray(a);
    }
 
    @Override
    public boolean add(E e) {
        return list.add(e);
    }
 
    @Override
    public boolean remove(Object o) {
        return list.remove(o);
    }
 
    @Override
    public boolean containsAll(Collection<?> c) {
        return list.containsAll(c);
    }
 
    @Override
    public boolean addAll(Collection<? extends E> c) {
        return list.addAll(c);
    }
 
    @Override
    public boolean addAll(int index, Collection<? extends E> c) {
        return list.addAll(index, c);
    }
 
    @Override
    public boolean removeAll(Collection<?> c) {
        return list.removeAll(c);
    }
 
    @Override
    public boolean retainAll(Collection<?> c) {
        return list.retainAll(c);
    }
 
    @Override
    public void clear() {
        list.clear();
    }
 
    @Override
    public E get(int index) {
        return list.get(index);
    }
 
    @Override
    public E set(int index, E element) {
        return list.set(index, element);
    }
 
    @Override
    public void add(int index, E element) {
        list.add(index, element);
    }
 
    @Override
    public E remove(int index) {
        return list.remove(index);
    }
 
    @Override
    public int indexOf(Object o) {
        return list.indexOf(o);
    }
 
    @Override
    public int lastIndexOf(Object o) {
        return list.lastIndexOf(o);
    }
 
    @Override
    public ListIterator<E> listIterator() {
        return list.listIterator();
    }
 
    @Override
    public ListIterator<E> listIterator(int index) {
        return list.listIterator(index);
    }
 
    @Override
    public List<E> subList(int fromIndex, int toIndex) {
        return list.subList(fromIndex, toIndex);
    }
 
    public List<E> getList() {
        return list;
    }
 
    public void setList(List<E> list) {
        this.list = list;
    } 
}

     @PostMapping("/test")
    public String testBytes(@Valid @RequestBody ValidList<Persion> persions){
        return "success";
    }  
 
@Data
public class Persion {
    @NotNull(message = "name != null")
    private String name;
    @NotNull(message = "teacherList != null")
    private ValidList<@Valid Teacher> teacherList;
} 
 
@Data
public class Teacher {
    @NotNull
    private String name;
    @NotNull
    private List<Student> students;
}

@Valid 嵌套对象验证不成功

controller:


@PostMapping("WSendList")
public apiResult getList( @ApiParam(required = true) @Valid  @RequestBody  PageLIstio<WSendIO> body) {
        ...
        return ApiResult.success();
    }

PageListIO对象:

在这里插入图片描述

WSendIO对象:


public class WSendIO implements Serializable{
    @NotNull(message = "字段 不能为空")
    private Integer isTest;
    ...
}

这样请求WSendIO中的验证时不会执行的

解决方案:在PageListIO中使用@Valid

在这里插入图片描述

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用@Valid 校验嵌套对象

本文链接: https://www.lsjlt.com/news/154947.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用@Valid 校验嵌套对象
    目录@Valid 校验嵌套对象@Valid 嵌套对象验证不成功@Valid 校验嵌套对象 参考网上的博客:ValidList 能校验list。 通过测试发现,@Valid只能校验一层...
    99+
    2022-11-12
  • 怎么使用GoFrame校验对象和校验结构体
    这篇文章主要介绍“怎么使用GoFrame校验对象和校验结构体”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用GoFrame校验对象和校验结构体”文章能帮助大家解决问题。基本概念数据校验组件提供...
    99+
    2023-07-02
  • SpringBoot参数校验之@Valid怎么使用
    这篇文章主要介绍“SpringBoot参数校验之@Valid怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot参数校验之@Valid怎么使用”文章能帮助大家解决问题。依赖&l...
    99+
    2023-07-02
  • Vue elementUI表单嵌套表格并对每行进行校验详解
    目录效果展示代码链接关键代码表格数据组件嵌套校验方法重置方法完整代码总结效果展示 先看看这是不是需要的效果^_^ 如图,ElementUI 表单里嵌套了表格,表格内每行能进行【保存...
    99+
    2022-11-12
  • SpringBoot参数校验之@Valid的使用详解
    目录简介依赖代码 测试测试1:缺少字段测试2:不缺少字段测试3:缺少字段,后端获取BindResult 简介 说明 本文用示例说明SpringBoot的@Vali...
    99+
    2022-11-13
  • 使用@RequestBody配合@Valid校验入参参数
    目录@RequestBody配合@Valid校验入参参数自定义一个Controller自定义实体类自定义全局异常处理器附录@Valid校验@RequestBody的参数希望通过注解校...
    99+
    2022-11-13
  • 使用@Validated和@Valid 解决list校验的问题
    目录@Validated和@Valid 解决list校验@validated验证List参数写了个接口ValidList@Validated和@Valid 解决list校验 在 Co...
    99+
    2022-11-12
  • 使用@Valid+BindingResult进行controller参数校验方式
    目录@Valid+BindingResult进行controller参数校验Controller层方法的参数校验全局统一异常拦截器@Valid+BindingResult进行cont...
    99+
    2022-11-12
  • 如何使用@Valid+BindingResult进行controller参数校验
    这篇文章主要介绍“如何使用@Valid+BindingResult进行controller参数校验”,在日常操作中,相信很多人在如何使用@Valid+BindingResult进行controller参数校验问题上存在疑惑,小编查阅了各式资...
    99+
    2023-06-21
  • Vue elementUI表单嵌套表格并对每行进行校验的示例分析
    这篇文章主要介绍Vue elementUI表单嵌套表格并对每行进行校验的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果展示先看看这是不是需要的效果^_^如图,ElementUI 表单里嵌套了表格...
    99+
    2023-06-22
  • Mybatis关联查询结果集对象嵌套的具体使用
    在查询时经常出现一对多”的关系,所有会出现嵌套对象的情况,Mybatis在resultMap提供了collection标签,本文适合有一定Mybatis基础的读者查阅 数...
    99+
    2022-11-13
  • Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable)
    目录@Valid和@Validated@Valid和@Validated比较@Valid高级使用@Valid级联校验@Validated高级使用@Validated分组校验@Vali...
    99+
    2022-11-13
  • vue如何利用v-for嵌套输出多层对象
    小编给大家分享一下vue如何利用v-for嵌套输出多层对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如下所示:specifications:[  {   ...
    99+
    2022-10-19
  • 如何用mongodb和spring boot修改深层嵌套对象
    如何用mongodb和spring boot修改深层嵌套对象?这篇文章运用了实例代码展示,代码非常详细,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。1.开发环境:mongodb+spring boot...
    99+
    2022-10-18
  • java如何优雅的实现参数非空校验,快速实现参数非空校验,使用@valid实现参数非空校验
    在java项目接口中,有些必传参数需要进行非空校验,如果参数过多,代码会繁杂且冗余,如何优雅的对参数进行非空校验,下面是实现流程 目录 一、整体思路二、引入依赖1、SpringBoot项...
    99+
    2023-10-21
    java 开发语言
  • Spring AOP 对象内部方法间的嵌套调用方式
    目录Spring AOP 对象内部方法间的嵌套调用我们先定义一个接口以及此接口的一个实现类增加AOP处理同一对象内的嵌套方法调用AOP失效原因分析举一个同一对象内的嵌套方法调用拦截失...
    99+
    2022-11-12
  • 解决Mybatis中foreach嵌套使用if标签对象取值的问题
    目录foreach嵌套使用if标签对象取值问题大体格式解决办法代码如下Mybatis if 语句嵌套要求foreach嵌套使用if标签对象取值问题 最近做项目过程中,涉及到需要在 M...
    99+
    2022-11-13
  • 如何解决Mybatis中foreach嵌套使用if标签对象取值的问题
    今天小编给大家分享一下如何解决Mybatis中foreach嵌套使用if标签对象取值的问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
    99+
    2023-06-29
  • ES6中怎么用解构赋值获取嵌套对象的属性
    小编给大家分享一下ES6中怎么用解构赋值获取嵌套对象的属性,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!用解构赋值获取嵌套对象的...
    99+
    2022-10-19
  • Python对比校验神器deepdiff库使用详解
    目录前言deepdiff库安装说明DeepDiff对比json列表校验忽略字符串类型忽略大小写DeepSearchDeepHashextractgrep工作中我们经常要两段代码的区别...
    99+
    2023-05-16
    Python对比库deepdiff Python deepdiff校验
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作