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 */
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 */
3.测试
参数验证失败时,请求依然会进入controller
以上是关于javax.validation - BindingResult的主要内容,如果未能解决你的问题,请参考以下文章
javax.validation.constraints 中的注释不起作用
Kotlin 和 javax.validation.constraints.NotNull
javax.validation - BindingResult
如何在子类中覆盖@annotations (javax.validation)
Hibernate Validator表单验证异常javax.validation.UnexpectedTypeException问题