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