@Valid和@Validated注解校验List<Object>
@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>相关推荐
- Spring中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated注解简介及简单使用
前言 在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作 Maven依赖的引入: springboot 2.3.0 以后 ...
- @Valid 和 @Validated 注解用法详解
目录 案例引入 @Valid 详解 @Validated 详解 @Valid 和 @Validated 比较 案例引入 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid ...
- @Validated注解校验
前后端交互中字段校验必不可少,当对象中有大量变量该如何校验?使用@validated注解是个不错的选择. @Valid是使用hibernate validation的时候使用:而@Validated ...
- 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》
文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...
- Springboot @Validated参数校验
简单使用 Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现.hibernate validation是对这个规范的实现,并增加了校验注解如@Em ...
- @Valid与@Validated区别
1.@Valid与@Validated作用 @Valid与@Validated都是用来校验接收参数的.@Valid是使用Hibernate validation的时候使用@Validated是只用Sp ...
- valid 和 validated的使用小结
[技术分享]Bean Validation使用篇 2020-07-09马平凡(鲁吉英) Bean Validation 使用篇 在开始文章之前,先讲一下为什么会写这篇文章,以及阅读后的相应收益. Be ...
- @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated
技术栈: spring boot 2.3.3.RELEASE hibernate-validator 文末附项目源代码 目录 简述 项目依赖 全局异常处理类 基础参数校验 实体类 控制类 测试 嵌套参 ...
- 校验注解:@Valid 和 @Validated区别与用法(附详细案例)
一.案例对象 本文章会以案例为主,讲解@Valid 和 @Validated这两个注解的区别与用法. 1.首先,创建一个学生对象,如下: import lombok.Data;/*** 学生对象*/ ...
最新文章
- 前端基础面试题大全-极乐科技(一)-JS部分
- 打开网页时出现DA AddrBar icon的解决方法
- 超摩尔定律!OpenAI官宣AI算法效率每16个月翻一番
- Caffeine Cache~高性能 Java 本地缓存之王
- mysql 10分钟_10分钟入门mysql(含常用的sql语句,mysql常见问题及解决方案)
- Java发送GET/POST请求
- 一个很不错的开发管理中文个人网站
- linux motion 分辨率,gtf 来调整Linux系统中分辩率问题分享
- 解决logstash启动过慢的问题
- [仁润云技术团队]并发编程-(1)基本概念
- poj 3264 Balanced Lineup RMQ问题
- 2018私塾在线高级java软件架构师实战培训最新
- Java基础常见笔试题总结
- 平方米的计算机公式,表格中平方米计算公式(怎么用excel计算平方)
- 射击类项目(数据的持久化保存)整理四
- 【iOS】调用百度、高德地图SDK
- 跟网络游戏,手机APP游戏告别
- 荟研新材料 毕克BYK420 水性涂料和颜料浓缩浆用液态流变助剂 抗流挂剂
- NBS的N把“瑞士军刀”——产品解读之规则设计器
- 如何使用利用nat123实现内网穿透