簡單快速對@RequestParam聲明的參數(shù)作校驗(yàn)操作
@RequestParam參數(shù)校驗(yàn)
如下所示:
- 第一步、在springMVC注入org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
- 第二步、重寫校驗(yàn)異常
- 第三步、在方法所在的類添加@Validated注解
- 第四步、在需要校驗(yàn)的參數(shù)前面添加校驗(yàn)規(guī)則
比如
接口入?yún)Ⅱ?yàn)證(@RequestParam\@Valid\@Validated\@RequestBody)
今天了解了下接口入?yún)Ⅱ?yàn)證問題:
1、
@RequestParam
:適用于Get請求且content-type為application/x-www-form-urlencoded@RequestBody
:適用于post請求且content-type為非application/x-www-form-urlencoded類型,一般為application/json
2、
(1)入?yún)锧RequestParam或@RequestBody時(shí),不用加@valid和@validated;
(2)入?yún)锧NotNull時(shí)要在方法上加@valid或@validated,或者在類上加@Validated(@valid不能作用于類上),這樣@NotNull才能起作用。
@Valid @GetMapping("/exam-info") public Boolean getInfo(@NotNull(message="examId不能為空")Long examId){......}
(3)當(dāng)入?yún)閷?shí)體對象時(shí),需要在方法上加@Valid或@Validated或者在參數(shù)前加@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)嵌套驗(yàn)證
@valid作用于屬性上有嵌套驗(yàn)證作用,@validated不能作用于屬性上,如下代碼在User類的屬性car上添加@valid注解,當(dāng)傳參id為空時(shí)會報(bào)錯(cuò)。
@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; ........ }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
細(xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別
下面小編就為大家?guī)硪黄?xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11Spring?main方法中如何調(diào)用Dao層和Service層的方法
這篇文章主要介紹了Spring?main方法中調(diào)用Dao層和Service層的方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot+MybatisPlus實(shí)現(xiàn)sharding-jdbc分庫分表的示例代碼
本文主要介紹了SpringBoot+MybatisPlus實(shí)現(xiàn)sharding-jdbc分庫分表的示例代碼,以分庫,分表,分庫分表三種方式來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Java設(shè)計(jì)模式之策略模式詳細(xì)解析
這篇文章主要介紹了Java設(shè)計(jì)模式之策略模式詳細(xì)解析,策略模式中,定義算法族,分別封裝起來,讓他們之間可以相互轉(zhuǎn)化,此模式讓算法的變化獨(dú)立于使用算法的客戶,需要的朋友可以參考下2023-11-11Java之InputStreamReader類的實(shí)現(xiàn)
這篇文章主要介紹了Java之InputStreamReader類的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11SpringBoot中@EnableAutoConfiguration注解的實(shí)現(xiàn)
Spring Boot@EnableAutoConfiguration是一個(gè)強(qiáng)大的工具,可以簡化配置過程,從而實(shí)現(xiàn)快速開發(fā),本文主要介紹了SpringBoot中@EnableAutoConfiguration注解的實(shí)現(xiàn),感興趣的可以了解一下2024-01-01Java if(boolean)和if(boolean=true)區(qū)別解析
這篇文章主要介紹了Java if(boolean)和if(boolean=true)區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Spring boot 數(shù)據(jù)庫連接斷線重連問題
這篇文章主要介紹了Spring boot 數(shù)據(jù)庫連接斷線重連問題,需要的朋友可以參考下2017-06-06