java 实体字段校验@NotNull @NotEmpty @NotBlank

注意在使用 @NotBlank 等注解时,一定要和 @valid 一起使用,否则 @NotBlank 不起作用。

1.@NotNull

不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其标注的字段可以使用 @size、@Max、@Min 对字段数值进行大小的控制.

一个 BigDecimal 的字段使用字段校验标签应该为 @NotNull。

在使用 @Range 一般用在 Integer 类型上可对字段数值进行大小范围的控制。

2.@NotEmpty

不能为 null,且长度必须大于 0,一般用在集合类上或者数组

3.@NotBlank

只能作用在接收的 String 类型上,注意是只能,不能为 null,而且调用 trim() 后,长度必须大于 0即:必须有实际字符

在使用 @Length 一般用在 String 类型上可对字段数值进行最大长度限制的控制。

@Valid

Controller层

@PoseMapping(value="/XXX ", produces="application/json")
@Operation(description="")
public ResponseEntity<?>  XXX (@Valid @RequestBody requestDto request, @RequestHeaders Headers headers ){Sring user = UserInfoUtils.getSoeidFromRequestHeader(headers);
//...}

Service层

checkRequest(Dto dto){if(!request.valid()){throw new XXException(msg)//throw new XXException(Https.OK, msg)
}
if(!request.validForAdd()){}
if(!request.validForEdit()){}

Dto层

XXXrequestDto(){//注解用于处理一些通用的验证
@NotBlank(message="xx cannot be null")
@JsonProperty("action")
private String action;//valid()用于处理一些分情况的验证
public boolean valid(){}
public boolean validForAdd(){return StringUtils. isNotBlank(xxName) ;
}
public boolean validForEdit(){return XXId !=null;
}
}

Example

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

String name = “Great answer!”;
@NotNull: true
@NotEmpty: true
@NotBlank: true

ValidExceptionHandler

@Valid注解校验必填字段返回错误信息@Valid 校验必填字段,当参数非法时,抛出异常,然后返回统一的错误信息

  1. 全局异常处理 使用 @ControllerAdvice 实现全局异常处理,只需要定义类,添加该注解即可定义方式如下:
/*** 全局校验异常处理* */
@ControllerAdvice
public class ValidExceptionHandler {/*** 以 JSON 格式返回校验异常信息* */@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseBodypublic Map<String, String> handleValidationException(MethodArgumentNotValidException e) {Map<String, String> errors = new HashMap<>();e.getBindingResult().getAllErrors().forEach(error -> {String fieldName = ((FieldError)error).getField(); // 字段名String errorMessage = error.getDefaultMessage(); // 校验失败信息errors.put(fieldName, errorMessage);});return errors;}
}

java 实体字段校验@Valid - @NotNull @NotEmpty @NotBlank - ValidExceptionHandler相关推荐

  1. 实体字段校验@NotNull、@NotEmpty、@NotBlank

    在前段向后端提交较多数据时,我们一般都会遇到字段校验的问题,使用Spring的字段验证很省事,一般会使用@NotNull.@NotEmpty.@NotBlank这三个东西,但使用的时候后端接收参数一定 ...

  2. java实体数据校验validation

    <!--添加依赖--> <dependency><groupId>javax.validation</groupId><artifactId> ...

  3. 注解@NotNull/@NotEmpty/@NotBlank

    @NotNull:不能为null,但可以为empty @NotEmpty:不能为null,而且长度必须大于0 @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度 ...

  4. @NotNull :@NotEmpty @NotBlank :@NonNull:@Nullable 的区别

    @NotNull : 用在基本类 型上 不能为null 但可以为空字符串 @NotEmpty : 用在集合类上 不能为空 并且长度必须大于0 @NotBlank : 只能作用在String上,不能为n ...

  5. java 实体字段变更记录_java – Hibernate:检查哪个实体的字段被修改

    我拥有的: 我有Hibernate实体,它包含许多非瞬态字段,包​​括集合.用户可以一次更新每个字段或一组字段. 有什么挑战 在处理程序中,我应该检查实体的哪个字段已被更改: public void ...

  6. 常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别

    实体字段校验 @NotNull.@NotEmpty.@NotBlank 1.@NotNull 不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其 ...

  7. 校验注解-- @NotNull、@NotEmpty、@NotBlank

    实体字段校验 @NotNull.@NotEmpty.@NotBlank 1.@NotNull:不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其 ...

  8. Java校验注解@NotEmpty,@NotBlank,@NotNull的使用方法和区别

    以上三个注解均是javax.validation.constraints包下的,用于属性上的: @NotEmpty.@NotBlank.@NotNull三个注解的区别: @NotEmpty: 用在集合 ...

  9. aop+注解 实现对实体类的字段校验_SpringBoot2.0实战(6)整合hibernate-validator进行参数校验...

    spring-boot-starter-web 项目中默认已经集成了 hibernate-validator 相关知识 @AssertTrue // 用于 boolean 字段,该字段只能为 true ...

最新文章

  1. Linux内核中的进程等待与其实现解析
  2. Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
  3. curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...
  4. Android开发之限制输入框长度 | 限制EditText输入长度 | 限制AppCompatEditText长度的方法
  5. JSF基于事件的沟通:过时的方法
  6. 阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破
  7. 图像处理之图像特征匹配
  8. bootstrap怎么在移动端横向布局_移动端筛选中的「不限」到底该怎么用
  9. win 10专业版中虚拟机里面无法按打开centos镜像
  10. 团队项目冲刺第二天进度
  11. 数学建模四大模型总结
  12. vue json对象转数组_Vue优秀表单组件,用Vue构建表单的最简单方法——Vue Formulate
  13. ectouch——wap端商城の数据表字典
  14. Base64、32、16 编码解析
  15. 2019大裁员!年关将至,最高裁员比例竟达90%?
  16. 普渡大学电子计算机专业,普渡大学最热门专业,了解一下?
  17. 手机麻将java开发_2019手机麻将游戏是怎么开发出来的
  18. 【工程/物理光学(二)——几何光学基础与光的成像】
  19. 推荐5个堪称神器的学习网站,在家你值得拥有
  20. 鸿蒙系统有carp,手把手教你CarPlay怎么用?CarPlay支持车型一览

热门文章

  1. matlab找多项式最值,如何利用matlab计算最小多项式
  2. 如何听节拍器_七个方法可以拯救你的节奏感!
  3. 详解:一次HTTP请求的全过程
  4. leetcode5473:灯泡开关 IV
  5. 运营——线上引流9大方法
  6. js 百度地图标记定位(一)
  7. 63 Three.js 将多个网格合并成一个网格
  8. CPython、Jython、PyPy
  9. 第十五天 13-linux防火墙
  10. mysql区间算法_「五大常用算法」一文图解分治算法和思想