validation主要是校验用户提交的数据的合法性,比如是否为空,密码是否符合规则,邮箱格式是否正确等等,校验框架比较多,用的比较多的是hibernate-validator, 也支持国际化,也可以自定义校验类型的注解,这里只是简单的演示校验框架在Spring Boot中的简单集成,要想了解更多可以参考 hibernate-validator

1. pom.xml

org.springframework.boot spring-boot-starter-validation

2. dto

public class UserInfoIDto { private Long id; @NotBlank @Length(min=3, max=10) private String username; @NotBlank @Email private String email; @NotBlank @Pattern(regexp="^((13[0-9])|(15[^4,D])|(18[0,3-9]))d{8}$", message="手机号格式不正确") private String phone; @Min(value=18) @Max(value = 200) private int age; @NotBlank @Length(min=6, max=12, message="昵称长度为6到12位") private String nickname; // Getter & Setter}

3. controller

import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;@RestControllerpublic class SimpleController { @PostMapping("/users") public String register(@Valid @RequestBody UserInfoIDto userInfoIDto, BindingResult result){ if (result.hasErrors()) { FieldError fieldError = result.getFieldError(); String field = fieldError.getField(); String msg = fieldError.getDefaultMessage(); return field + ":" + msg; } System.out.println("开始注册用户..."); return "success"; }}

4. 常用的约束注解

  • @Null 被注释的元素必须为 null
  • @NotNull 被注释的元素必须不为 null
  • @AssertTrue 被注释的元素必须为 true
  • @AssertFalse 被注释的元素必须为 false
  • @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
  • @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past 被注释的元素必须是一个过去的日期
  • @Future 被注释的元素必须是一个将来的日期
  • @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
  • Hibernate Validator 附加的 constraint
  • @NotBlank(message =) 验证字符串非null,且长度必须大于0
  • @Email 被注释的元素必须是电子邮箱地址
  • @Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
  • @NotEmpty 被注释的字符串的必须非空
  • @Range(min=,max=,message=) 被注释的元素必须在合适的范围内
  • @URL(protocol=,host=, port=, regexp=, flags=) 被注释的字符串必须是一个有效的url
  • @CreditCardNumber 被注释的字符串必须通过Luhn校验算法,银行卡,信用卡等号码一般都用Luhn计算合法性
  • @ScriptAssert(lang=, script=, alias=) 要有Java Scripting API 即JSR 223 (“Scripting for the JavaTM Platform”)的实现
  • @SafeHtml(whitelistType=, additionalTags=) classpath中要有jsoup包

validation 开始日期 结束日期_Spring Boot集成validation用于优雅的校验API参数的合法性...相关推荐

  1. 关于datediff(year,开始日期,结束日期)中year格式的说明,特别注意year两边不能加引号,否则报错...

    关于datediff(year,开始日期,结束日期)中year格式的说明,特别注意year两边不能加引号,否则报错 如果要计算两个时间是否满意年,可以相减,最小365,润年366天.求整 转载于:ht ...

  2. java beetl模板引擎_Spring Boot集成beetl模板引擎 个人总结

    1. Spring boot快速集成beetl模板引擎 查看官方文档:http://ibeetl.com/guide/#beetl 可参看官方文档 4.6. Spring Boot集成 增加beetl ...

  3. Android 自定义日期段选择控件,开始日期-结束日期。

    开发中碰到个需求,需要在一个控件中选择完成开始和结束日期.实现的过程走的是程序员开发的老路子,找到轮子后自己改吧改吧就成了.去年做的找不到参考的文章连接了,请原博主见谅. 当时做的时候有几个需求:1. ...

  4. 通过开始日期结束日期算请假天数

    在实体中两个Date属性的变量加上注解. 加注解后得到的startDate为YYYY-MM-DD格式 @DateTimeFormat(pattern = SimpleDateUtil.COMMON_D ...

  5. 小程序 机票火车票酒店 开始日期结束日期选择 日历组件

    github:https://github.com/xiaoyangyang-code/calendar 码云:https://gitee.com/xiaoyang688/calendar ##先看一 ...

  6. shell 开始日期 结束日期循环

    shell 日期循环 #!/bin/sh if [ $# == 2 ]; thendatebeg=$1dateend=$2 elseecho "请输入开始时间和结束日期,格式为2017-04 ...

  7. idea swagger生成接口文档_spring boot集成Swagger-UI接口文档

    本文介绍如何用spring boot集成Swagger-UI,实现项目在线接口文档 一.Swagger-UI简介 Swagger是一个Restful风格接口的文档在线自动生成和测试的框架 官网对Swa ...

  8. spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存

    Spring Boot 集成 Redis 实现数据缓存,只要添加一些注解方法,就可以动态的去操作缓存了,减少代码的操作. 在这个例子中我使用的是 Redis,其实缓存类型还有很多,例如 Ecache. ...

  9. springboot 单测加入参数_Spring Boot集成Elasticsearch实战分享

    作者|java梦想口服液|简书 最近有读者问我能不能写下如何使用 Spring Boot 开发 Elasticsearch(以下简称 ES) 相关应用,今天就讲解下如何使用 Spring Boot 结 ...

  10. springboot dubbo引入包_spring boot 集成 dubbo 企业完整版

    一.什么是Spring Boot ? 现阶段的 Spring Boot 可谓是太火了,为什么呢?因为使用方便.配置简洁.上手快速,那么它是什么?从官网上我们可以看到,它是 Spring 开源组织下的一 ...

最新文章

  1. 如何识别未使用的CSS定义[关闭]
  2. 2020年10月GitHub上最热门的开源项目
  3. Xcode7 项目转 Xcode6 时 出现问题
  4. Hyperledger Fabric 词汇表
  5. 关于ftp的功能类——下载,上传,断点,连接
  6. 如何在Windows上使用64位Web浏览器
  7. opensource项目_最佳Opensource.com:硬件
  8. ES6 学习笔记 (1)
  9. 《Image Effects 》第一章学习笔记(2)
  10. Qt环境搭建(Visual Studio)
  11. [渝粤教育] 西南科技大学 英语写作 在线考试复习资料
  12. 此文已删除,为何删不掉?
  13. 父与子一起学python3_父与子的编程之旅(与小卡特一起学Python第3版全彩印刷)/图灵程序设计丛书...
  14. [zz]明月虽好by 王大根 from 豆瓣
  15. <论文阅读>CRaft
  16. 参观营收上亿的私域流量企业
  17. BufferedInputStream。。。。。。。BufferedReader和BufferedWriter
  18. 将一个数的每一位都正序输出——简单算法
  19. (个人笔记) java 打印不了韩文,乌龙事件
  20. groupByKey与reduceByKey区别

热门文章

  1. 在Winform开发框架中实现对数据库的加密支持(转)
  2. 面向开发者的最佳 Android 库列表
  3. ADT(abstract data types)抽象数据类型
  4. POJ 2391 Ombrophobic Bovines【二分+最大流】
  5. TCP/IP 三次握手
  6. 为多个VLAN实现DCHP
  7. BGSOUND与EMBED的区别
  8. 几个开源项目实体层实现方式比较
  9. python测试面试题-python接口自动化+测试开发面试题
  10. d3.js中点可以用图片吗_WebGL 直线直吗?