1.实体类属性上添加注解规则 如 public class User { @NotBlank private Integer id ; 2.在方法中添加注解@Valid和一个校验结果参数(BindingResult类型) 如 @RequestMapping(value = "/update" ,method = RequestMethod.POST) public String update(@Valid User user ,BindingResult bindingResult){…
这几个可以为对象,不只是字符串 1.@NotNull 不能为null,但可以为empty (""," "," ") 2.@NotEmpty 不能为null,而且长度必须大于0 (" "," ") 3.@NotBlank 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 ("test") 即:必须有实际字符…
1. 三者主要区别如下: @NotEmpty :用于集合类,不能为null,且size>0 @NotNull:不能为null,但可以为empty,没有size的约束 @NotBlank:只用于String,不能为null,且trim()之后size>0 2. 通过查看源码注释如下: @NotEmpty /** * Asserts that the annotated string, collection, map or array is not {@code null} or empty. *…
@NotEmpty 用在集合上面(不能注释枚举) @NotBlank用在String上面 @NotNull用在所有类型上面 1. @NotEmpty Asserts that the annotated string, collection, map or array is not {@code null} or empty. 加了@NotEmpty的String类,Collection.Map.数组,是不能为null或者长度为0的(String.Collection.Map 的isEmpth(…
Spring中@NotNull.@NotEmpty.@NotBlank的区别@NotNull:用于基本数据类型@NotEmpty:用于集合类@NotBlank:用于String上面…
开发中常看见@NotNull,@NotBlank,@NotEmpty三个注解,但却没有深入了解过,下面介绍一下他们的应用场景和区别 @NotNull:主要用在基本数据类型上(Int,Integer,Double) 举例: @NotNull(message = "年龄不能为空") private Integer age; @NotBlank:主要用在String字符串上面(String) 举例: @NotBlank(message = "名字不能为空") privat…
@NotNull: 主要用在基本数据类型上(Integer.Double...) 不能为null,但可以为empty 举例: @NotNull(message = "标题不能为空") private String title; @NotBlank : 主要用在String字符串上面 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 注意在使用@NotBlank等注解时,一定要和@valid一起使用,不然@NotBlank不起作用 举例: @NotBlan…
1.@NotNull:不能为 Null,但是可以为Empty:用在基本数据类型上. @NotNull(message="{state.notnull.valid}", groups = {Groups.Insert.class, Groups.Update.class }) private Integer state; 2.@NotBlank:只能在String上使用,并且调用trim()后,长度必须大于0: @NotBlank(message = "{password.no…
源码解析 @NotEmpty根据JDK源码注释说明,该注解只能应用于char可读序列(可简单理解为String对象),colleaction,map,array上,因为该注解要求的是对象不为null且size>0,所以只有上述对象是拥有size属性的,而Integer,Long等基础对象包装类没有该属性 /** * The annotated element must not be {@code null} nor empty. Supported types are: * <ul> *…
一.前言 搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定. 二.方案 按照我们以往的做法,都是对request中的参数一个一个进行非空判定. Model: 1 public class Order { 2 3 4 private Long userID; 5 6 7 private Long addressID; 8 9 private String comm…
package demo.dto; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotEmpty; import java.io.Serializable; public class ProductDto implements Serializable { @NotEmpty(message = "姓名 不允许为空") @Length(min = 2, ma…
Springboot学习06-Spring AOP封装接口自定义校验 关键字 BindingResult.Spring AOP.自定义注解.自定义异常处理.ConstraintValidator 前言 在实际项目中,对接口的传如的参数需要做校验处理,原来都是在接口里面直接进行if判断,虽然简单,但是每个接口都要重复写,显得冗余:并且返回的数据也无法很好的自定义说明校验情况:如下: @RequestMapping(value = { "/get/authcode" }, method =…
文章目录 Java中的数据校验 Bean Validation(JSR 380) 使用示例 Spring对Bean Validation的支持 Spring中的Validator 接口定义 UML类图 SmartValidator SpringValidatorAdapter ValidatorAdapter CustomValidatorBean LocalValidatorFactoryBean OptionalValidatorFactoryBean 使用示例 @Validated跟@Va…
1 概述 本篇文章以Spring Boot为基础,从以下三个方向讲述了如何设计一个优秀的后端接口体系: 参数校验:涉及Hibernate Validator的各种注解,快速失败模式,分组,组序列以及自定义注解/Validator 异常处理:涉及ControllerAdvice/@RestControllerAdvice以及@ExceptionHandler 数据响应:涉及如何设计一个响应体以及如何包装响应体 有了一个优秀的后端接口体系,不仅有了规范,同时扩展新的接口也很容易,本文演示了如何从零一…
1.Java Web设置页面刷新的方法(两种): response.setHeader("refresh", "0.3," + request.getHeader("Referer")); response.getWriter().print("<meta http-equiv='Refresh' content='5;url=http://www.baidu.com.cn' />");…
通常情况下,数据验证都分为前台验证,后台验证.并且前台JS验证是肯定有的,那么其实验证的错误信息根本不必通过后台传过去,哪怕就是想国际化,前台JS也能够胜任. 如果前台验证足够了,那么如果还有不正确的信息传到后台去,极有可能是通过非法手段.那么我对这些信息也不必客气,直接拒接就行了,连错误信息都不必发. 基于这个思想, 后台验证可以省掉很多东西. 我们现在使用Hibernate的那一套验证,必须引入Hibernate-validator的jar包.到Maven Repository 去找就行了.…
一.json框架 市面上的json框架常用的有 jackson.gson.fastjson.大家比较推崇的是fastjson,但是springmvc默认集成的是 jackson. 在一个项目中建议一个项目只是用一种 json 框架. 二.json使用场景 1.mvc http传输的body虽然是json格式的,但实际还是以串字符串.我们使用对象接收需要进行json转换.同样,返回给浏览器时在解析成字json格式的符串. springmvc 支持多种 json框架,默认jsckson,想要修改ja…
springboot天生支持使用hibernate validation对参数的优雅校验,如果不使用它,只能对参数挨个进行如下方式的手工校验,不仅难看,使用起来还很不方便: if(StringUtils.isEmpty(userName)){ throw new RuntimeException("用户名不能为空"); } 下面将介绍hibernate validation的基本使用方法. 一.引入依赖 这里在springboot 2.4.1中进行实验,引入以下依赖: <pare…
背景 .NETCore下的模型验证相信绝大部分的.NET开发者或多或少的都用过,微软官方提供的模型验证相关的类位于System.ComponentModel.DataAnnotations命令空间下,在使用的时候只需要给属性添加不同的特性即可实现对应的模型验证.如下所示: public class Movie { public int Id { get; set; } [Required] [StringLength(100)] public string Title { get; set; }…
全部章节   >>>> 本章目录 6.1 模型数据解析及控制器返回值 6.1.1 ModelAndView多种用法 6.1.2  Map添加模型数据和返回String类型值 6.1.3  Model添加模型数据和返回String类型值 6.1.4 返回值为String类型的重定向和转发 6.1.5 实践练习 6.2 Spring MVC表单标签库 6.2.1  form表单与模型数据的绑定 6.2.2  Spring MVC常用标签 6.2.3 实践练习 6.3  Spring M…
1.所需要Jar包 ? <!-- Spring3.0.1包 -->   org.springframework.web-3.0.1 系列   <!-- 公共包 -->   slf4j-api-1.5.6.jar   slf4j-log4j12-1.5.6.jar        log4j-1.2.13.jar   commons-logging-1.1.1.jar         asm-3.1.jar        cglib-2.2.jar   <!-- mybatis与…
点击上一章-SpringMVC视图及REST风格 Spring mvc 数据绑定流程: SpringMvc将ServletRequest对象及目标方法的形参实例传给WebDataBinderFactory实例,以创建DataBinder实例对象.DataBinder调用装配在SpringMvc上下文中的ConversionService组件进行类型转换和数据格式化工作,将Servlet请求信息填充到形参对象中.调用Validator主键对已经绑定了请求信息的形参对象精选数据有效性验证,并最终生成…
本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User TestController 本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 swagger的使用本身是非常简单的,因为所有的一切swagger都帮你做好了,你所要做的就是专注写你的api信息 swagger自动生成html文档并且打包到jar包中 本文不仅用…
右键打开NuGet程序包管理,进入浏览,搜索 FluentValidation,点击下载 在Model文件夹添加一个Person类进行校验 校验前,using需要引入相应的命名空间方可使用,AbstractValidators叫对象验证器的基类需要继承它,针对属性进行校验,并且输出相应的错误提示 using FluentValidation; using FluentValidation.Attributes; namespace Demo.Models { [Validator(typeof(…
事情是这样的,前段时间做代码review的时候,发现项目中有一个方法代码量超鸡儿多,而且大部分都是写的参数校验的代码,得,我们先抓着缕一缕需求先. 产品需求 找到产品要到了需求文档,需求是这样得: excel数据模板下载 excel数据导入 导入得时候根据模板得校验规则来进行筛选,导入成功得返回成功列表,数据有问题得返回失败列表,失败列表支持数据编辑修正 好吧.看到需求第一眼可能就是第三列有点难度,我们知道,传统得数据校验是在DTO上面加注解 如下: //第一种 public Result te…
示例结果: // null String name = null; @NotNull: false @NotEmpty: false @NotBlank: false // 空字符串 String name = ""; @NotNull: true @NotEmpty: false @NotBlank: false // 空格 String name = " "; @NotNull: true @NotEmpty: true @NotBlank: false //…
1.@NotNull:不能为null,但可以为empty (""," "," ") 2.@NotEmpty:不能为null,而且长度必须大于0 (" "," ") 3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0 ("test") 即:必须有实际字符 * @NotNull: The CharSequence, Collection,…
@NotEmpty 用在集合类上面  @NotBlank 用在String上面  @NotNull 用在基本类型上 只有简单的结果,但是再更具体一点的内容就搜不到了,所以去看了看源码,发现了如下的注释: 1. @NotEmpty /** * Asserts that the annotated string, collection, map or array is not {@code null} or empty. * * @author Emmanuel Bernard * @author…
@interface NotNull The annotated element must not be {@code null}.Accepts any type.-------------------- @interface NotEmpty * The annotated element must not be {@code null} nor empty. Supported types are:* <ul>* <li>{@code CharSequence} (lengt…
1.@NotNull:不能为null,但可以为empty:用在基本类型上. 2.@NotEmpty:不能为null,而且长度必须大于0:用在集合类上面. 3.@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0,即:必须有实际字符.…