使用Hibernate Validator进行数据校验

Bean Validation注解(需要加入相关依赖,在SpringBoot中可以直接使用,SpringBoot会帮我们直接加入)

@Null 验证对象是否为空(属性必须为空,客户不能传入此属性,否则会报错)

@NotNull 验证对象是否为非空(属性不为空,客户必须传入此属性,否则会报错)

@Min 验证Number和String对象是否大于等于指定的值

@Max 验证Number和String对象是否小于等于指定的值

@Size 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内

@Past 验证Date和Calendar对象是否在当前时间之前

@Future 验证Date和Calendar对象是否在当前时间之后

@AssertTrue 验证Boolean对象是否为true

@AssertFalse 验证Boolean对象是否为false

@Valid 级联验证注解

注解可以用在成员变量上:

package com.example.demo;

import java.util.Date;
import java.util.List; import javax.validation.Valid;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size; import com.fasterxml.jackson.annotation.JsonFormat; public class TvSeriesDto {
@Null private int id;
@NotNull private String name;
@DecimalMin("") private int seasonCount;
//@Valid表示要级联校验;@Size(min=2)表示这个列表至少要有2项内容,否则通不过校验
@Valid @NotNull @Size(min=) private List<TvCharacterDto> tvCharacters; //如果想用long型的timestamp表示日期,可用:@JsonFormat(shape = JsonFormat.Shape.NUMBER)
@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-dd")
//@Past表示只接受过去的时间,比当前时间还晚的被认为不合格
@Past private Date originRelease; public TvSeriesDto() { } public TvSeriesDto(int id, String name, int seasonCount, Date originRelease) {
this.id = id;
this.name = name;
this.seasonCount = seasonCount;
this.originRelease = originRelease;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSeasonCount() {
return seasonCount;
}
public void setSeasonCount(int seasonCount) {
this.seasonCount = seasonCount;
}
public Date getOriginRelease() {
return originRelease;
}
public void setOriginRelease(Date originRelease) {
this.originRelease = originRelease;
} @Override
public String toString() {
return "TvSeriesDto [id=" + id + ", name=" + name + ", seasonCount=" + seasonCount + ", originRelease="
+ originRelease + "]";
} }

可以用在方法上:

我们发现,如果传入参数不符合验证要求就会被退回去;通过BindingResult,无论传入参数是否符合要求,

都可以通过BindingResult传入程序中,交由程序进行作判断。如下:

客户端同意使用postman来发送请求~~

客户端传入数据的校验-RestController进阶的更多相关文章

  1. HDFS源码解析:教你用HDFS客户端写数据

    摘要:终于开始了这个很感兴趣但是一直觉得困难重重的源码解析工作,也算是一个好的开端. 本文分享自华为云社区<hdfs源码解析之客户端写数据>,作者: dayu_dls. 在我们客户端写数据 ...

  2. 使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

    原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图. ...

  3. 使用spring validation完成数据后端校验

    前言 数据的校验是交互式网站一个不可或缺的功能,前端的js校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验.但是为了避免用户绕过浏览器,使用http工具直接向后端请求 ...

  4. Elasticsearch集群搭建及使用Java客户端对数据存储和查询

    本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计. 一.Elastic集群搭建 1. 环境准备. 该集群环境基于VMware虚拟机.CentOS ...

  5. 继承spring的validator接口,实现对数据的校验

    在org.springframework.validation这个包中提供了一些对数据校验的方法,其中Validator接口是其中的一个. 现在用Validator接口,完成对数据的校验. 第一步:先 ...

  6. HDFS源码分析数据块校验之DataBlockScanner

    DataBlockScanner是运行在数据节点DataNode上的一个后台线程.它为所有的块池管理块扫描.针对每个块池,一个BlockPoolSliceScanner对象将会被创建,其运行在一个单独 ...

  7. 用多线程优化Excel表格数据导入校验的接口

    公司的需求,当前某个Excel导入功能,流程是:读取Excel数据,传入后台校验每一条数据,判断是否符合导入要求,返回给前端,导入预览展示.(前端等待响应,难点).用户再点击导入按钮,进行异步导入(前 ...

  8. 使用spring validation完成数据后端校验-自定义校验的注解-判断是否为空

    引入依赖 我们使用maven构建springboot应用来进行demo演示. <dependencies> <dependency> <groupId>org.sp ...

  9. SpringMVC 学习笔记(三)数据的校验

    34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...

随机推荐

  1. 函数式编程的类型系统:typeclass--Functor的解释--构造类型

    函数式编程的类型系统:typeclass Typeclass是带有关联构造类型的抽象接口,抽象接口的行为用于约束构造类型. 构造类型实现了抽象接口的行为约束,就称这个实现为这个构造类型的函子. 要素: ...

  2. 【洛谷】【动态规划/背包】P1417 烹调方案

    由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的食物准备填 ...

  3. 程序集(Assembly)和模块(Managed Module)

    前言 一直都用集成开发坏境(IDE),一直对模块和程序集的概念理解的不是很直观,因为一Build就把你的单个模块塞进程序集里面去了.当然,对你的编程也不会造成太大的影响.但有些东西你最好还是知道比较好 ...

  4. 记录一下iOS Leak的使用方法。

    观测过程中不需要使用xcode.只需观察Leak工具即可 1:选中Xcode,点击左上角的Xcode.找到tool   然后找到instrument.如下图 2:打开instrument 找到Leak ...

  5. 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  6. PyQt 5 的学习引言

    Python 是我学习的第二门编程语言,第一门编程语言是C. 曾经用C和C++的一个库(easyx库)写过图形界面应用, 感受就是难受又难看, 现在想学一下 PyQt 5 这个python的库, 用博 ...

  7. JQuery的ajax函数执行失败,alert函数弹框一闪而过

    先查看<form>标签是否有action属性,如果没有,并且最后<button>标签的type属性为'submit‘时,默认提交位置就是当前页面 如果在页面右键检查,点击网络, ...

  8. vba 批量生成条形图代码

    Sub hong3()'' 宏3 宏d Dim a, b As Integer Dim str As String For a = 227 To 947 Step 15 b = a + 5 str = ...

  9. Codeforces VK Cup 2018 Div.2

    总题面传送门 这次考试只过了3题,前三题题目难度并不大,但是第三题的代码细节卡了我两个半小时(基本上整场考试),所以以后要合理把握时间,注意把握代码细节,并更加完善我的代码风格,使其更加简练.(赛外话 ...

  10. python基础学习1-内置函数

    #!/usr/bin/env python # -*- coding:utf-8 -*- 系统内置函数 n =abs(-1) #绝对值 print(n) #bytes()函数 s="离开&q ...