SpringBoot使用@Validation校驗實體引數
阿新 • • 發佈:2022-12-04
在做前後端分離時,需要提供介面給前端,那麼介面的欄位實體校驗就顯得尤為重要了
-
在需要實體校驗的實體類前加上
@Validated @RequestBody
註解 -
是校驗的實體類的欄位上加入相關的校驗註解
註解 | 功能 |
---|---|
@AssertFalse | 可以為null,如果不為null的話必須為false |
@AssertTrue | 可以為null,如果不為null的話必須為true |
@DecimalMax | 設定不能超過最大值 |
@DecimalMin | 設定不能超過最小值 |
@Digits | 設定必須是數字且數字整數的位數和小數的位數必須在指定範圍內 |
@Future | 日期必須在當前日期的未來 |
@Past | 日期必須在當前日期的過去 |
@Max | 最大不得超過此最大值 |
@Min | 最大不得小於此最小值 |
@NotNull | 不能為null,可以是空 |
@Null | 必須為null |
@Pattern | 必須滿足指定的正則表示式 |
@Size | 集合、陣列、map等的size()值必須在指定範圍內 |
必須是email格式 | |
@Length | 長度必須在指定範圍內 |
@NotBlank | 字串不能為null,字串trim()後也不能等於“” |
@NotEmpty | 不能為null,集合、陣列、map等size()不能為0;字串trim()後可以等於“” |
@Range | 值必須在指定範圍內 |
@URL | 必須是一個URL |
-
實體校驗異常捕獲,在有
@RestControllerAdvice
註解的類裡建立異常處理方法-
@ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(value = MethodArgumentNotValidException.class) public Result handler(MethodArgumentNotValidException e){ log.error("實體校驗異常:============={}"); BindingResult bindingResult = e.getBindingResult(); ObjectError objectError = bindingResult.getAllErrors().stream().findFirst().get(); return Result.fail(objectError.getDefaultMessage()); }
-
@NotEmpty和@NotBlank和@NotNull
- @NotNull:不能為null,但可以為empty,用在基本型別上
- @NotEmpty:不能為null,而且長度必須大於0,用在集合類上面
- @NotBlank:只能作用在String上,不能為null