簡(jiǎn)單快速對(duì)@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)證問(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類型,一般為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í)體對(duì)象時(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í)會(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)文章
MyBatis無(wú)縫轉(zhuǎn)MyBatis-plus的基本使用
本文介紹了使用MyBatis-plus來(lái)優(yōu)化MyBatis的使用,包括引入依賴、改造Mapper、實(shí)體類注解使用、Service層方法改造等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
SpringBoot整合Lucene實(shí)現(xiàn)全文檢索的詳細(xì)步驟
全文搜索(Full-Text?Search)是指對(duì)大規(guī)模存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的文本數(shù)據(jù)進(jìn)行檢索和匹配的技術(shù),它允許用戶輸入關(guān)鍵字,然后從海量的文本數(shù)據(jù)中快速找到相關(guān)的信息,本文介紹了SpringBoot整合Lucene實(shí)現(xiàn)全文檢索的詳細(xì)步驟,需要的朋友可以參考下2024-03-03
SpringBoot中的統(tǒng)一異常處理詳細(xì)解析
這篇文章主要介紹了SpringBoot中的統(tǒng)一異常處理詳細(xì)解析,該注解可以把異常處理器應(yīng)用到所有控制器,而不是單個(gè)控制器,借助該注解,我們可以實(shí)現(xiàn):在獨(dú)立的某個(gè)地方,比如單獨(dú)一個(gè)類,定義一套對(duì)各種異常的處理機(jī)制,需要的朋友可以參考下2024-01-01
Spring Boot 2.x中Actuator的一些知識(shí)點(diǎn)
這篇文章主要給大家介紹了關(guān)于Spring Boot 2.x中Actuator的一些知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.x具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Java實(shí)現(xiàn)自定義LinkedList類的示例代碼
LinkedList類跟ArrayList類不同,它通過(guò)指針以及結(jié)點(diǎn)的操作對(duì)鏈表進(jìn)行增刪改查。本文就來(lái)和大家分享下Java如何為實(shí)現(xiàn)自定義LinkedList類,需要的可以參考一下2022-08-08
Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(概要分析)
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Spring MVC保證Controller并發(fā)安全的方法小結(jié)
在 Spring MVC 中,默認(rèn)情況下,@Controller 是單例的,這意味著所有請(qǐng)求共享一個(gè) Controller 實(shí)例,為確保并發(fā)安全,Spring 并不會(huì)自動(dòng)對(duì) Controller 進(jìn)行線程安全保護(hù),本文給大家介紹了Spring MVC保證Controller并發(fā)安全的方法,需要的朋友可以參考下2024-11-11
集合框架及背后的數(shù)據(jù)結(jié)構(gòu)
本文主要介紹了Java的集合框架Java?Collection?Framework,接口interface以及背后的數(shù)據(jù)結(jié)構(gòu),感興趣的同學(xué)可以閱讀參考2023-03-03
Java 從網(wǎng)上下載文件的幾種方式實(shí)例代碼詳解
本文通過(guò)實(shí)例代碼給大家介紹了java從網(wǎng)上下載文件的幾種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-08-08

