簡單快速對@RequestParam聲明的參數作校驗操作
@RequestParam參數校驗
如下所示:
- 第一步、在springMVC註入org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
- 第二步、重寫校驗異常
- 第三步、在方法所在的類添加@Validated註解
- 第四步、在需要校驗的參數前面添加校驗規則
比如
接口入參驗證(@RequestParam\@Valid\@Validated\@RequestBody)
今天瞭解瞭下接口入參驗證問題:
1、
@RequestParam
:適用於Get請求且content-type為application/x-www-form-urlencoded@RequestBody
:適用於post請求且content-type為非application/x-www-form-urlencoded類型,一般為application/json
2、
(1)入參為@RequestParam或@RequestBody時,不用加@valid和@validated;
(2)入參為@NotNull時要在方法上加@valid或@validated,或者在類上加@Validated(@valid不能作用於類上),這樣@NotNull才能起作用。
@Valid @GetMapping("/exam-info") public Boolean getInfo(@NotNull(message="examId不能為空")Long examId){......}
(3)當入參為實體對象時,需要在方法上加@Valid或@Validated或者在參數前加@Valid或@Validated,或者在類上加
@Validated @Valid @GetMapping("/exam-info") public Boolean getInfo(User user){......} @GetMapping("/exam-info") public Boolean getInfo(@Valid User user){......} @Validated @GetMapping("/exam-info") public Boolean getInfo(User user){......} @GetMapping("/exam-info") public Boolean getInfo(@Validated User user){......} public Class User{ @NotNull("id不能為空") private Integer id; . . . }
(4)嵌套驗證
@valid作用於屬性上有嵌套驗證作用,@validated不能作用於屬性上,如下代碼在User類的屬性car上添加@valid註解,當傳參id為空時會報錯。
@GetMapping("/exam-info") public Boolean getInfo(@Valid User user){.....} @GetMapping("/exam-info") public Boolean getInfo(@Validated User user){.....} public class User{ @Valid @NotNull("car不能為空") private Car car; ........ } public class Car{ @NotNull("id不能為空") private Integer id; ........ }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Spring的@RequestParam對象綁定方式
- 關於@RequestParam的使用所遇到的404問題
- 聊聊@RequestParam,@PathParam,@PathVariable等註解的區別
- POST方法給@RequestBody傳參數失敗的解決及原因分析
- SpringMVC 接收前端傳遞的參數四種方式小結