spring-boot-starter-validation 校验参数的实现
目录
t; import org.springframework.validation.BindException; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import lombok.extern.slf4j.Slf4j; @Slf4j @RestControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(value = BindException.class) public jsonResult exceptionHandle(BindException exception) { BindingResult result = exception.getBindingResult(); StringBuilder errorMsg = new StringBuilder(); List另外JsonResult.java用于接口返回统一个json格式
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
*@author wang
*@Date 2020-9-14
*
**/
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonResult
当然还有其他异常处理方式可以参考:https://www.jb51.net/article/244379.htm
七、测试效果
八、嵌套对象的校验
import lombok.Data; import javax.validation.Valid; import javax.validation.constraints.*; @Data public class User { @NotEmpty(message = "用户名不能为空") @Size(message = "长度 [1-3] ", min = 1, max = 3, groups = ValidateGroup.FirstGroup.class) private String username; @Min(message = "id不得小于0", value = 0) private Integer id; @NotBlank(message = "地址不能为空", groups = {ValidateGroup.ThirdGroup.class, ValidateGroup.SecondeGroup.class}) private String address; //在内部属性是自定义对象的时候添加 @Valid 注解 ,即可开启对In对象的校验。 //记得添加@NotNull注解,否则该对象可以为null,并且此时In对象的校验规则也不会抛出异常 。 @Valid @NotNull(message = "In 对象不能为null ", groups = {ValidateGroup.ThirdGroup.class, ValidateGroup.SecondeGroup.class}) private In in; }
/** *自定义的对象,User对象中的一个属性。 */ @Data public class In { @NotBlank(message = "str不能为空", groups = {ValidateGroup.ThirdGroup.class, ValidateGroup.SecondeGroup.class}) private String str; }
九、自定义注解(自定义校验规则)
9.1 实现ConstraintValidator接口
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class WordConstraintValidator implements ConstraintValidator
9.2 自定义注解
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; @Target({ ElementType.METHOD, ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = WordConstraintValidator.class) public @interface CustomValidaor { String message(); // groups 和 payload 这两个parameter 必须包含,不然会报错 Class[] groups() default {}; Class[] payload() default {}; }
9.3 使用
@Data public class Inner { @NotBlank(message = "str不能为空", groups = { ValidateGroup.ThirdGroup.class, ValidateGroup.SecondeGroup.class }) @CustomValidaor(message = "长度必须为10", groups = { ValidateGroup.ThirdGroup.class, ValidateGroup.SecondeGroup.class }) private String str; }
9.4测试
访问接口
@PostMapping("test6") public User test6(@Validated({ValidateGroup.SecondeGroup.class}) @RequestBody User u) { System.out.println(u); return u; }
到此这篇关于spring-boot-starter-validation 校验参数的实现的文章就介绍到这了,更多相关spring-boot-starter-validation 校验参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
推荐阅读
-
每个Java程序员必备的8个开发工具
本文由码农网 –王国峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!现在有很多库、实用工具和程序任J...
-
Java实战之医院管理系统的实现
目录项目介绍环境需要技术栈使用说明效果图展示核心代码用户管理控制层医生管理控制层病房管理控制层项目介绍医院管理系统,分为管理员、医...
-
elasticsearch索引index之Translog数据功能分析
目录translog的结构及写入方式translogFile的继承关系TranslogFile快照的方法总结translog的结构...
-
java实现简单发送邮件功能
-
Java实现图片比率缩放
-
Java中的JetCache 实战
-
elasticsearch索引index之engine读写控制结构实现
目录engine的实现结构Engine类的方法:如index方法的实现:总结engine的实现结构elasticsearch对于...
-
elasticsearch索引index之Mapping实现关系结构示例
目录Mapping的实现关系结构Mapper的三类parse方法部分Field总结Mapping的实现关系结构Lucene索引的...
-
LeetCode 动态规划之矩阵区域和详情
目录题目题解解题分析解题代码题目矩阵区域和给你一个mxn的矩阵mat和一个整数k,请你返回一个矩阵answer,其中每个a...
-
elasticsearch索引的创建过程index create逻辑分析
目录索引的创建过程materOperation方法实现clusterservice处理建立索引修改配置总结索引的创建过程从本篇...
-
每个Java程序员必备的8个开发工具
本文由码农网 –王国峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!现在有很多库、实用工具和程序任J...
-
Java实战之医院管理系统的实现
目录项目介绍环境需要技术栈使用说明效果图展示核心代码用户管理控制层医生管理控制层病房管理控制层项目介绍医院管理系统,分为管理员、医...
-
elasticsearch索引index之Translog数据功能分析
目录translog的结构及写入方式translogFile的继承关系TranslogFile快照的方法总结translog的结构...
-
java实现简单发送邮件功能
-
Java实现图片比率缩放
-
Java中的JetCache 实战
-
elasticsearch索引index之engine读写控制结构实现
目录engine的实现结构Engine类的方法:如index方法的实现:总结engine的实现结构elasticsearch对于...
-
elasticsearch索引index之Mapping实现关系结构示例
目录Mapping的实现关系结构Mapper的三类parse方法部分Field总结Mapping的实现关系结构Lucene索引的...
-
LeetCode 动态规划之矩阵区域和详情
目录题目题解解题分析解题代码题目矩阵区域和给你一个mxn的矩阵mat和一个整数k,请你返回一个矩阵answer,其中每个a...
-
elasticsearch索引的创建过程index create逻辑分析
目录索引的创建过程materOperation方法实现clusterservice处理建立索引修改配置总结索引的创建过程从本篇...
-
每个Java程序员必备的8个开发工具
本文由码农网 –王国峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!现在有很多库、实用工具和程序任J...
-
Java实战之医院管理系统的实现
目录项目介绍环境需要技术栈使用说明效果图展示核心代码用户管理控制层医生管理控制层病房管理控制层项目介绍医院管理系统,分为管理员、医...
-
elasticsearch索引index之Translog数据功能分析
目录translog的结构及写入方式translogFile的继承关系TranslogFile快照的方法总结translog的结构...
-
java实现简单发送邮件功能
-
Java实现图片比率缩放
-
Java中的JetCache 实战
-
elasticsearch索引index之engine读写控制结构实现
目录engine的实现结构Engine类的方法:如index方法的实现:总结engine的实现结构elasticsearch对于...
-
elasticsearch索引index之Mapping实现关系结构示例
目录Mapping的实现关系结构Mapper的三类parse方法部分Field总结Mapping的实现关系结构Lucene索引的...
-
LeetCode 动态规划之矩阵区域和详情
目录题目题解解题分析解题代码题目矩阵区域和给你一个mxn的矩阵mat和一个整数k,请你返回一个矩阵answer,其中每个a...
-
elasticsearch索引的创建过程index create逻辑分析
目录索引的创建过程materOperation方法实现clusterservice处理建立索引修改配置总结索引的创建过程从本篇...