javax.validation - BindingResult

Posted abdusalam10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javax.validation - BindingResult相关的知识,希望对你有一定的参考价值。

1.书写接收参数参数对象

 1 import lombok.Data;
 2 import javax.validation.constraints.NotBlank;
 3 import javax.validation.constraints.NotNull;
 4 
 5 @Data
 6 public class AbcParam {
 7 
 8     @NotBlank(message = "课程名称不能为")
 9     private String title;
10 
11     @NotNull(message = "价格不能为空")
12     private Integer price;
13 }
14 
15 /**
16  * @NotBlank 【只对字符串】检查约束字符串是不是Null还有被Trim的长度是否大于0
17  * @NotNull  验证对象是否不为null, 无法查检长度为0的字符串
18  */
View Code

2.书写 Controller

 1 import javax.validation.Valid;
 2 import org.springframework.validation.BindingResult;
 3 import org.springframework.validation.FieldError;
 4 
 5 @RestController
 6 @RequestMapping(value = "/abc")
 7 public class AbcController {
 8 
 9     @PostMapping(value = "/save")
10     public Object save(@RequestBody @Valid AbcParam abcParam, BindingResult bindingResult){
11 
12         boolean hasErrors = bindingResult.hasErrors();
13         if(hasErrors){
14             // 有错误信息 --> 验证失败
15             List<String> errorMsgList = new ArrayList<String>();
16             List<FieldError> errors =  bindingResult.getFieldErrors();
17             for (FieldError error:errors) {
18                 String errorMsg =  error.getDefaultMessage();
19                 errorMsgList.add(errorMsg);
20             }
21             return errorMsgList;
22         }
23         return abcParam;
24     }
25 }
26 
27 /**
28  * @Valid 启用参数校验(不使用这个注解就不会进行校验)
29  *
30  * BindingResult 作用:使用BindingResult后,无论请求参数验证是否通过,请求能进入controller,参数都能被注入到abcParam(参数验证失败也不会抛出400)
31  *                     bindingResult 参数包含验证失败信息,可以向前端返回这些验证失败信息
32  */
View Code

3.测试

参数验证失败时,请求依然会进入controller

以上是关于javax.validation - BindingResult的主要内容,如果未能解决你的问题,请参考以下文章

javax.validation.constraints 中的注释不起作用

Kotlin 和 javax.validation.constraints.NotNull

javax.validation

javax.validation - BindingResult

如何在子类中覆盖@annotations (javax.validation)

Hibernate Validator表单验证异常javax.validation.UnexpectedTypeException问题