java 实体字段校验@Valid - @NotNull @NotEmpty @NotBlank - ValidExceptionHandler
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 校验必填字段,当参数非法时,抛出异常,然后返回统一的错误信息
- 全局异常处理 使用 @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相关推荐
- 实体字段校验@NotNull、@NotEmpty、@NotBlank
在前段向后端提交较多数据时,我们一般都会遇到字段校验的问题,使用Spring的字段验证很省事,一般会使用@NotNull.@NotEmpty.@NotBlank这三个东西,但使用的时候后端接收参数一定 ...
- java实体数据校验validation
<!--添加依赖--> <dependency><groupId>javax.validation</groupId><artifactId> ...
- 注解@NotNull/@NotEmpty/@NotBlank
@NotNull:不能为null,但可以为empty @NotEmpty:不能为null,而且长度必须大于0 @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度 ...
- @NotNull :@NotEmpty @NotBlank :@NonNull:@Nullable 的区别
@NotNull : 用在基本类 型上 不能为null 但可以为空字符串 @NotEmpty : 用在集合类上 不能为空 并且长度必须大于0 @NotBlank : 只能作用在String上,不能为n ...
- java 实体字段变更记录_java – Hibernate:检查哪个实体的字段被修改
我拥有的: 我有Hibernate实体,它包含许多非瞬态字段,包括集合.用户可以一次更新每个字段或一组字段. 有什么挑战 在处理程序中,我应该检查实体的哪个字段已被更改: public void ...
- 常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别
实体字段校验 @NotNull.@NotEmpty.@NotBlank 1.@NotNull 不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其 ...
- 校验注解-- @NotNull、@NotEmpty、@NotBlank
实体字段校验 @NotNull.@NotEmpty.@NotBlank 1.@NotNull:不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其 ...
- Java校验注解@NotEmpty,@NotBlank,@NotNull的使用方法和区别
以上三个注解均是javax.validation.constraints包下的,用于属性上的: @NotEmpty.@NotBlank.@NotNull三个注解的区别: @NotEmpty: 用在集合 ...
- aop+注解 实现对实体类的字段校验_SpringBoot2.0实战(6)整合hibernate-validator进行参数校验...
spring-boot-starter-web 项目中默认已经集成了 hibernate-validator 相关知识 @AssertTrue // 用于 boolean 字段,该字段只能为 true ...
最新文章
- Linux内核中的进程等待与其实现解析
- Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
- curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...
- Android开发之限制输入框长度 | 限制EditText输入长度 | 限制AppCompatEditText长度的方法
- JSF基于事件的沟通:过时的方法
- 阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破
- 图像处理之图像特征匹配
- bootstrap怎么在移动端横向布局_移动端筛选中的「不限」到底该怎么用
- win 10专业版中虚拟机里面无法按打开centos镜像
- 团队项目冲刺第二天进度
- 数学建模四大模型总结
- vue json对象转数组_Vue优秀表单组件,用Vue构建表单的最简单方法——Vue Formulate
- ectouch——wap端商城の数据表字典
- Base64、32、16 编码解析
- 2019大裁员!年关将至,最高裁员比例竟达90%?
- 普渡大学电子计算机专业,普渡大学最热门专业,了解一下?
- 手机麻将java开发_2019手机麻将游戏是怎么开发出来的
- 【工程/物理光学(二)——几何光学基础与光的成像】
- 推荐5个堪称神器的学习网站,在家你值得拥有
- 鸿蒙系统有carp,手把手教你CarPlay怎么用?CarPlay支持车型一览