这里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校验入参的更多相关文章

  1. 如何优雅地在 Spring Boot 中使用自定义注解,AOP 切面统一打印出入参日志 | 修订版

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  2. 201. Spring Boot JNDI:Spring Boot中怎么玩JNDI

      [视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源 ...

  3. Spring Boot中Starter是什么

    比如我们要在Spring Boot中引入Web MVC的支持时,我们通常会引入这个模块spring-boot-starter-web,而这个模块如果解压包出来会发现里面什么都没有,只定义了一些POM依 ...

  4. Spring Boot 中使用 jpa

    本文原文版权归 CSDN Hgihness 所有,此处为转载+技术收藏,如有再转请自觉于篇头处标明原文作者及出处,这是大家对作者劳动成果的自觉尊重!! 作者:Hgihness 原文:http://bl ...

  5. 解决spring boot中rest接口404,500等错误返回统一的json格式

    在开发rest接口时,我们往往会定义统一的返回格式,列如: { "status": true, "code": 200, "message" ...

  6. Spring Boot 中全局异常处理器

    Spring Boot 中全局异常处理器,就是把错误异常统一处理的方法.等价于Springmvc中的异常处理器. 步骤一:基于前面的springBoot入门小demo修改 步骤二:修改HelloCon ...

  7. Spring boot中使用servlet filter

    Spring boot中使用servlet filter liuyuhang原创,未经允许请勿转载! 在web项目中经常需要一些场景,如参数过滤防止sql注入,防止页面攻击,空参数矫正等, 也可以做成 ...

  8. spring boot 中文文档地址

    spring boot 中文文档地址     http://oopsguy.com/documents/springboot-docs/1.5.4/index.html Spring Boot 参考指 ...

  9. Spring Boot中使用Swagger2构建RESTful APIs介绍

    1.添加相关依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <depen ...

随机推荐

  1. TS-接口

    接口 TS的核心原则之一是对值所具有的结构进行类型检测 接口初探 function printLabel(labelledObj: { label: string }) { console.log(l ...

  2. H5调用百度地图导航

    template <div class="map"> <div class="content_flex"><img src=&qu ...

  3. C/C++各个周期的学习

    C/C++ 程序的生命周期 编写时: 要点:业务,数据结构,控制解耦:健壮:易修改:清晰简单无歧义:易重用:低耦合高内聚:易链接:速度快(时间复杂度,空间复杂度,cache友好): 书籍:<c+ ...

  4. leetcode-第11场双周赛-5089-安排会议日程

    题目描述: 自己的提交: class Solution: def minAvailableDuration(self, slots1: List[List[int]], slots2: List[Li ...

  5. Ruby 语法

    Ruby 语法 让我们编写一个简单的 Ruby 程序.所有的 Ruby 文件扩展名都是 .rb.所以,把下面的源代码放在 test.rb 文件中. 实例 #!/usr/bin/ruby -w puts ...

  6. bzoj1042题解

    [题意分析] 有q个询问,每次询问求一个只有四个物品的背包方案数. [解题思路] 先计算出所有面值硬币的无限背包方案数. 考虑容斥,每个限制表示选取大于di个面值ci的硬币,总方案数=0限制方案数-1 ...

  7. NOIp2018集训test-10-4/test-10-5 (联考四day1/day2)

    这个day1稍微有点毒瘤吧?? DAY1 排列 以前总是把day1t1想太复杂了翻车,差不多往正解的方向想了一下感觉不可能这么复杂这可是noipday1t1啊一定有非常简单的方法然后翻车了?? 题目转 ...

  8. NX二次开发-算法篇-判断找到两个数组里不相同的对象

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include < ...

  9. python输入输出(二)

    输出 >>> print(5) 5 >>> print(5*6) 30 >>> s1 = "hello" >>&g ...

  10. C# sort System.InvalidOperationException: Failed to compare two elements in the ar

    System.InvalidOperationException: Failed to compare two elements in the array. ---> System.NullRe ...