基于@Valid和@Validated验证List集合的踩坑记录

 更新时间:2024年07月11日 09:16:29   作者:超负荷小生  
这篇文章主要介绍了基于@Valid和@Validated验证List集合的踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

基于Springboot框架验证list只需要一下两步:

情况一、在Controller上添加@Validated注解

方法上添加@Valid注解,就能验证了

实体类:

情况二、只是用@Valid,并且不是SpringBoot2.0版本

首先编写ValidableList类

@Data
public class ValidableList<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 false;
    }

    @Override
    public Iterator<E> iterator() {
        return null;
    }

    @Override
    public Object[] toArray() {
        return new Object[0];
    }

    @Override
    public <T> T[] toArray(T[] a) {
        return null;
    }

    @Override
    public boolean add(E e) {
        return false;
    }

    @Override
    public boolean remove(Object o) {
        return false;
    }

    @Override
    public boolean containsAll(Collection<?> c) {
        return false;
    }

    @Override
    public boolean addAll(Collection<? extends E> c) {
        return false;
    }

    @Override
    public boolean addAll(int index, Collection<? extends E> c) {
        return false;
    }

    @Override
    public boolean removeAll(Collection<?> c) {
        return false;
    }

    @Override
    public boolean retainAll(Collection<?> c) {
        return false;
    }

    @Override
    public void clear() {

    }

    @Override
    public E get(int index) {
        return null;
    }

    @Override
    public E set(int index, E element) {
        return null;
    }

    @Override
    public void add(int index, E element) {

    }

    @Override
    public E remove(int index) {
        return null;
    }

    @Override
    public int indexOf(Object o) {
        return 0;
    }

    @Override
    public int lastIndexOf(Object o) {
        return 0;
    }

    @Override
    public ListIterator<E> listIterator() {
        return null;
    }

    @Override
    public ListIterator<E> listIterator(int index) {
        return null;
    }

    @Override
    public List<E> subList(int fromIndex, int toIndex) {
        return null;
    }


}

控制器改为

@PostMapping("/saveClasses")
    public R saveClasses(@RequestBody @Valid ValidableList<BaseClassVo> baseClasses){
        baseclassService.saveBaseClasses(baseClasses);
        return R.ok();
    }

本人在实验中

在SpringBoot中使用第二种方法一直报错,空指针异常。

后来发现Springboot可以将@Valid和@Validated两个注解混合使用,验证list集合并不是这样操作,而是第一种方法。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    这篇文章主要介绍了SpringMVC结合ajaxfileupload.js实现文件无刷新上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • SpringData Repository接口用法解析

    SpringData Repository接口用法解析

    这篇文章主要介绍了SpringData Repository接口用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java设计模式之状态模式(State模式)介绍

    Java设计模式之状态模式(State模式)介绍

    这篇文章主要介绍了Java设计模式之状态模式(State模式)介绍,本文讲解了何时使用状态模式、如何使用状态模式等内容,需要的朋友可以参考下
    2015-03-03
  • IntelliJ IDEA搜索整个项目进行全局替换(有危险慎用)

    IntelliJ IDEA搜索整个项目进行全局替换(有危险慎用)

    今天小编就为大家分享一篇关于IntelliJ IDEA搜索整个项目进行全局替换(有危险慎用),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java生成word文档的示例详解

    Java生成word文档的示例详解

    这篇文章主要为大家详细介绍了如何利用Java语言生成word文档,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考一下
    2022-12-12
  • 浅谈springboot多模块(modules)开发

    浅谈springboot多模块(modules)开发

    这篇文章主要介绍了浅谈springboot多模块(modules)开发,详细的介绍了springboot多模块的实现,有兴趣的可以了解一下
    2017-09-09
  • java HashMap,TreeMap与LinkedHashMap的详解

    java HashMap,TreeMap与LinkedHashMap的详解

    这篇文章主要介绍了 java HashMap,TreeMap与LinkedHashMap的详解的相关资料,这里提供实例代码,帮助大家学习理解 这部分的内容,需要的朋友可以参考下
    2016-11-11
  • Java synchronized重量级锁实现过程浅析

    Java synchronized重量级锁实现过程浅析

    这篇文章主要介绍了Java synchronized重量级锁实现过程,synchronized是Java里的一个关键字,起到的一个效果是"监视器锁",它的功能就是保证操作的原子性,同时禁止指令重排序和保证内存的可见性
    2023-02-02
  • 如何解决Java程序包不存在问题

    如何解决Java程序包不存在问题

    在使用IDEA 2022版本和Maven项目中,可能遇到Java程序包不存在的问题,这是由于IDEA的小bug引起的,文章提供了两种解决方法:第一种是在IDEA的Settings中配置,并在pom.xml中添加特定代码刷新Maven;第二种是通过IDEA的设置菜单修改Maven导入配置
    2024-10-10
  • IDEA连接mysql数据库报错的解决方法

    IDEA连接mysql数据库报错的解决方法

    这篇文章主要介绍了IDEA连接mysql数据库报错的解决方法,文中有非常详细的图文示例,对出现Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ prope报错的小伙伴们很有帮助哟,需要的朋友可以参考下
    2021-05-05

最新评论