spring boot中使用javax.validation以及org.hibernate.validator校验入参
这里springboot用的版本是:<version>2.1.1.RELEASE</version>
自带了hibernate.validator,所以不用添加额外依赖
1、创建个对应前台form的测试vo,并添加字段校验注解
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Digits;
import javax.validation.constraints.Future;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
public class TestVO {
// 判断字符串空用这个
@NotBlank(message="姓名必须输入!")
private String name;
@NotBlank
@Length(min=18,max=19,message="身份证长度必须在18-19之间")
private String card;
@NotNull
@Past(message="日期必须必须是当天之前")
//@Future
// 前台传递日期字符,自动转换成日期对象
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
// 日期对象输出到前台,自动格式化展示
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date date;
// 判断基本类型空用这个
@NotNull(message="年龄必须输入!")
@Max(message="最大年龄28岁!",value=28)
@Min(message="最小年龄18岁!",value=18)
private Integer age;
@NotBlank
// string,numeric大小判断
@Range(min=1,max=100,message="weight只能在1-100之间")
// 数组,集合大小判断
// @Size(max=100, min=1,message="size只能在1-100之间")
@Digits(integer=3,fraction=2,message="weight只能为数字,整数3位以下,小数保留2位")
private String weight;
@NotNull
@AssertTrue(message="性别只能填男!")
//@AssertFalse
private Boolean sex;
// 判断集合空用这个
@NotEmpty(message="集合不能为空!")
List<String> list;
@Null(message="该字段不能设值!")
//@NotNull
private Object tmp;
@NotBlank
@Pattern(regexp="^[150[0-9]+]{11}",message="电话格式有问题!")
private String phone;
@NotBlank
@Email(message="email格式不正确!")
private String email;
@DecimalMin(value="18",message="dicimal不能小于18!")
@DecimalMax(value="20",message="dicimal不能大于20!")
private BigDecimal dicimal; //getter..setter.. 省略
}
2、创建controller接收参数测试控制层
@RestController
public class TestController {
@RequestMapping(value="/v")
public void validateTestVO(@Valid TestVO testVO,BindingResult result) {
if(result.hasErrors()){
List<ObjectError> list = result.getAllErrors();
for(ObjectError error:list){
System.out.println(error.getCode()+"-"+error.getDefaultMessage());
}
}
}
}
3、创建controller测试类,测试校验
public class ControllerTest {
private MockMvc mockMvc;
//@Before注解的表示在测试启动的时候优先执行,一般用作资源初始化。
//这里初始化生成controller类单例
@Before
public void setUp()throws Exception{
mockMvc=MockMvcBuilders.standaloneSetup(new TestController()).build();
}
@Test
public void controllerTest()throws Exception{
mockMvc.perform(MockMvcRequestBuilders.post("/v")
.param("age", "28")
// .param("name", "aaa")
// .param("list", "[\"bb\",\"cc\"]")
// .param("card", "123456789012345678")
// .param("date", "2019-10-01 11:09:11")
// .param("weight", "99.99")
// .param("sex", "true")
//// .param("tmp", "")
//// .param("phone", "")
// .param("dicimal", "18")
// .param("email", "aaa")
);
}
}
spring boot中使用javax.validation以及org.hibernate.validator校验入参的更多相关文章
- 如何优雅地在 Spring Boot 中使用自定义注解,AOP 切面统一打印出入参日志 | 修订版
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- 201. Spring Boot JNDI:Spring Boot中怎么玩JNDI
[视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源 ...
- Spring Boot中Starter是什么
比如我们要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web,而这个模块如果解压包出来会发现里面什么都没有,只定义了一些POM依 ...
- Spring Boot 中使用 jpa
本文原文版权归 CSDN Hgihness 所有,此处为转载+技术收藏,如有再转请自觉于篇头处标明原文作者及出处,这是大家对作者劳动成果的自觉尊重!! 作者:Hgihness 原文:http://bl ...
- 解决spring boot中rest接口404,500等错误返回统一的json格式
在开发rest接口时,我们往往会定义统一的返回格式,列如: { "status": true, "code": 200, "message" ...
- Spring Boot 中全局异常处理器
Spring Boot 中全局异常处理器,就是把错误异常统一处理的方法.等价于Springmvc中的异常处理器. 步骤一:基于前面的springBoot入门小demo修改 步骤二:修改HelloCon ...
- Spring boot中使用servlet filter
Spring boot中使用servlet filter liuyuhang原创,未经允许请勿转载! 在web项目中经常需要一些场景,如参数过滤防止sql注入,防止页面攻击,空参数矫正等, 也可以做成 ...
- spring boot 中文文档地址
spring boot 中文文档地址 http://oopsguy.com/documents/springboot-docs/1.5.4/index.html Spring Boot 参考指 ...
- Spring Boot中使用Swagger2构建RESTful APIs介绍
1.添加相关依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <depen ...
随机推荐
- 使用Thread创建线程
#_author:来童星#date:2019/12/17#使用Thread创建线程import threadingimport timeclass Sunthread(threading.Thread ...
- CSS——外观样式及应用
CSS注释 CSS规则是使用 /* 需要注释的内容 */ 进行注释的,即在需要注释的内容前使用 “/*” 标记开始注释,在内容的结尾使用 “*/”结束. 例如: p { font-size: 14p ...
- splay 模板 洛谷3369
题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 插入 xx 数 删除 xx 数(若有多个相同的数,因只删除一个) 查询 xx 数的排名(排名定义为比当前数小的数 ...
- 城里城外看SSDT
引子 2006年,中国互联网上的斗争硝烟弥漫.这时的战场上,先前颇为流行的窗口挂钩.API挂钩.进程注入等技术已然成为昨日黄花,大有逐渐淡出之势:取而代之的,则是更狠毒.更为赤裸裸的词汇:驱动.隐藏进 ...
- LeetCode 2. Add Two Numbers (两数相加)
题目标签:Linked List, Math 题目给了我们两个 Linked List, 各代表一个数字,不过顺序的反的.让我们把两个数字相加. 和普通的相加其实差不多,只不过变成了 Linked L ...
- Web 开发规范 — WSGI
目录 目录 WSGI 简介 为什么需要 WSGI 这个规范 WSGI 如何工作 WSGI的角色 Server 如何调用 Application application 的两个参数 applicatio ...
- 编译Solr4.72 源码没有成功
最近需要用到solr,查询Hbase里面的数据,编译Solr的时候遇到了点问题: 下了solr的源码后需要用ant自己编译: 源码下载地址:https://svn.apache.org/repos/a ...
- Web前端开发必备手册(Cheat sheet)
转自:http://blog.bingo929.com/cheat-sheets-for-web-develop.html Cheat sheet这个词组如果直译成中文,意思大概是”作弊小抄”之类的词 ...
- 9款很棒的网页绘制图表JavaScript框架脚本
推荐9款很棒的可在网页中绘制图表的JavaScript脚本,这些有趣的JS脚本可以帮助你快速方便的绘制图表(线.面.饼.条…),其中包括jQuery.MooTools.Prototype和一些其它的J ...
- 2008年国外50个最佳CSS设计欣赏
这50个CSS网站是由WebDesignerWall评选出来的,很具参考价值.我们在欣赏的同时,也能从中吸取很多灵感,也能从它们的源代码中学习更高级的CSS技术.今年,越来越多的设计师开始使用超大的背 ...