@Valid和@Validated注解校验List< Object>

spring 4整合hibernate-validator6

1.导包

     <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.7.Final</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>com.fasterxml</groupId><artifactId>classmate</artifactId><version>1.5.0</version></dependency>

2.实现List< E >接口

/** Copyright (c) 2005, 2020, EVECOM Technology Co.,Ltd. All rights reserved.* EVECOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/package net.evecom.styqwebsite.util;import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.*;/*** 描述** @author Jerome* @created 2021/1/19 14:43*/
public class ValidableList<E> implements List<E> {@Valid@NotEmpty(message = "参数不能为空")private List<E> list = new ArrayList<>();public List<E> getList() {return list;}public void setList(List<E> list) {this.list = list;}@Overridepublic int size() {return list.size();}@Overridepublic boolean isEmpty() {return list.isEmpty();}@Overridepublic boolean contains(Object o) {return list.contains(o);}@Overridepublic Iterator<E> iterator() {return list.iterator();}@Overridepublic Object[] toArray() {return list.toArray();}@Overridepublic <T> T[] toArray(T[] a) {return list.toArray(a);}@Overridepublic boolean add(E e) {return list.add(e);}@Overridepublic boolean remove(Object o) {return list.remove(o);}@Overridepublic boolean containsAll(Collection<?> c) {return list.containsAll(c);}@Overridepublic boolean addAll(Collection<? extends E> c) {return list.addAll(c);}@Overridepublic boolean addAll(int index, Collection<? extends E> c) {return list.addAll(index, c);}@Overridepublic boolean removeAll(Collection<?> c) {return list.removeAll(c);}@Overridepublic boolean retainAll(Collection<?> c) {return list.retainAll(c);}@Overridepublic void clear() {list.clear();}@Overridepublic E get(int index) {return list.get(index);}@Overridepublic E set(int index, E element) {return list.set(index, element);}@Overridepublic void add(int index, E element) {list.add(index, element);}@Overridepublic E remove(int index) {return list.remove(index);}@Overridepublic int indexOf(Object o) {return list.indexOf(o);}@Overridepublic int lastIndexOf(Object o) {return list.lastIndexOf(o);}@Overridepublic ListIterator<E> listIterator() {return null;}@Overridepublic ListIterator<E> listIterator(int index) {return null;}@Overridepublic List<E> subList(int fromIndex, int toIndex) {return list.subList(fromIndex, toIndex);}
}

3.实体类

package com.atguigu.spring.autowire;import javax.validation.constraints.NotEmpty;public class Dept {@NotEmpty(message = "名称不能为空")private String dname;public void setDname(String dname) {this.dname = dname;}public String getDname() {return dname;}@Overridepublic String toString() {return "Dept{" +"dname='" + dname + '\'' +'}';}
}

4.控制层

/** Copyright (c) 2005, 2020, EVECOM Technology Co.,Ltd. All rights reserved.* EVECOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/package net.evecom.styqwebsite.action;import net.evecom.common.action.BaseController;
import net.evecom.common.util.ValidateList;
import net.evecom.common.vmodel.VReturnMessage;
import net.evecom.styqwebsite.model.EarthquakeAreaDesc;
import net.evecom.styqwebsite.service.EarthquakeAreaDescService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;@RestController
@RequestMapping("/dept")
public class DeptController extends BaseController {@Autowiredprivate DeptService deptService;/*@Valid和@Validated注解都可以用*/@PostMapping("/save")public VReturnMessage save(@RequestBody @Valid ValidateList<Dept> deptList, BindingResult bindingResult) {if (bindingResult.hasErrors()){StringBuffer errors = new StringBuffer();bindingResult.getAllErrors().forEach(error ->{errors.append(error.getDefaultMessage() + ";");});return VReturnMessage.fail(errors.toString());}try {deptService.save(deptList);} catch (Exception exception) {LOGGER.error("错误",exception);return VReturnMessage.fail("保存出错");}return VReturnMessage.success();}
}

@Valid和@Validated注解校验List<Object>相关推荐

  1. Spring中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated注解简介及简单使用

    前言 在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作 Maven依赖的引入: springboot 2.3.0 以后 ...

  2. @Valid 和 @Validated 注解用法详解

    目录 案例引入 @Valid 详解 @Validated 详解 @Valid 和 @Validated 比较 案例引入 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid ...

  3. @Validated注解校验

    前后端交互中字段校验必不可少,当对象中有大量变量该如何校验?使用@validated注解是个不错的选择. @Valid是使用hibernate validation的时候使用:而@Validated  ...

  4. 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》

    文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...

  5. Springboot @Validated参数校验

    简单使用 Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现.hibernate validation是对这个规范的实现,并增加了校验注解如@Em ...

  6. @Valid与@Validated区别

    1.@Valid与@Validated作用 @Valid与@Validated都是用来校验接收参数的.@Valid是使用Hibernate validation的时候使用@Validated是只用Sp ...

  7. valid 和 validated的使用小结

    [技术分享]Bean Validation使用篇 2020-07-09马平凡(鲁吉英) Bean Validation 使用篇 在开始文章之前,先讲一下为什么会写这篇文章,以及阅读后的相应收益. Be ...

  8. @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

    技术栈: spring boot 2.3.3.RELEASE hibernate-validator 文末附项目源代码 目录 简述 项目依赖 全局异常处理类 基础参数校验 实体类 控制类 测试 嵌套参 ...

  9. 校验注解:@Valid 和 @Validated区别与用法(附详细案例)

    一.案例对象 本文章会以案例为主,讲解@Valid 和 @Validated这两个注解的区别与用法. 1.首先,创建一个学生对象,如下: import lombok.Data;/*** 学生对象*/ ...

最新文章

  1. 前端基础面试题大全-极乐科技(一)-JS部分
  2. 打开网页时出现DA AddrBar icon的解决方法
  3. 超摩尔定律!OpenAI官宣AI算法效率每16个月翻一番
  4. Caffeine Cache~高性能 Java 本地缓存之王
  5. mysql 10分钟_10分钟入门mysql(含常用的sql语句,mysql常见问题及解决方案)
  6. Java发送GET/POST请求
  7. 一个很不错的开发管理中文个人网站
  8. linux motion 分辨率,gtf 来调整Linux系统中分辩率问题分享
  9. 解决logstash启动过慢的问题
  10. [仁润云技术团队]并发编程-(1)基本概念
  11. poj 3264 Balanced Lineup RMQ问题
  12. 2018私塾在线高级java软件架构师实战培训最新
  13. Java基础常见笔试题总结
  14. 平方米的计算机公式,表格中平方米计算公式(怎么用excel计算平方)
  15. 射击类项目(数据的持久化保存)整理四
  16. 【iOS】调用百度、高德地图SDK
  17. 跟网络游戏,手机APP游戏告别
  18. 荟研新材料 毕克BYK420 水性涂料和颜料浓缩浆用液态流变助剂 抗流挂剂
  19. NBS的N把“瑞士军刀”——产品解读之规则设计器
  20. 如何使用利用nat123实现内网穿透

热门文章

  1. JAVA并发-Future/CompletableFuture
  2. hadoop安装包下载
  3. 常见电路结构分析四:plc控制系统与其他控制系统的比较
  4. IDEA如何多次启动同一个程序
  5. DSP广告精准投放平台如何快速提升品牌知名度
  6. h5在ios下拉上拉会带动整个页面出现空白解决方案
  7. 【python】opencv教程CV2模块——图片处理,HSV、色调、亮度调节
  8. PyTorch学习系列教程:构建一个深度学习模型需要哪几步?
  9. HTML页面为什么设置了UTF-8仍然中文乱码
  10. 什么是基类,什么是派生类