Spring中@RequestParam使用及遇到的一些坑
加與不加的區(qū)別
@RequestMapping("/list1") public String test1(int userId) { return "list"; } @RequestMapping("/list2") public String test2(@RequestParam int userId) { return "list"; }
(1)不加@RequestParam前端的參數(shù)名需要和后端控制器的變量名保持一致才能生效
(2)不加@RequestParam參數(shù)為非必傳,加@RequestParam寫(xiě)法參數(shù)為必傳。但@RequestParam可以通過(guò)@RequestParam(required = false)設(shè)置為非必傳。
(3)@RequestParam可以通過(guò)@RequestParam(“userId”)或者@RequestParam(value = “userId”)指定傳入的參數(shù)名。
(4)@RequestParam可以通過(guò)@RequestParam(defaultValue = “0”)指定參數(shù)默認(rèn)值
(5)如果接口除了前端調(diào)用還有后端RPC調(diào)用,則不能省略@RequestParam,否則RPC會(huì)找不到參數(shù)報(bào)錯(cuò)
(6)訪(fǎng)問(wèn)時(shí):
- 不加@RequestParam注解:url可帶參數(shù)也可不帶參數(shù),輸入 localhost:8080/list1 以及 localhost:8080/list1?userId=xxx 方法都能執(zhí)行
- 加@RequestParam注解:url必須帶有參數(shù)。也就是說(shuō)你直接輸入localhost:8080/list2 會(huì)報(bào)錯(cuò),不會(huì)執(zhí)行方法。只能輸入localhost:8080/list2?userId=xxx 才能執(zhí)行相應(yīng)的方法
使用RequestParam遇到的一些坑(總結(jié))
@RequestParam有三個(gè)常用的注解:
value:表示前端傳到后端時(shí),變量的名稱(chēng)。(例如:前端傳到后端的參數(shù):userName="Tom",那么@RequestParam(value = "userName") String xxx)
required: boolean類(lèi)型,值為true/false。需要特別注意:required參數(shù)的意思其實(shí)更接近于在前端傳遞到后端的參數(shù)中,是否包含這個(gè)參數(shù)。什么意思呢?比如@RequestParam(value = "userName", required = true) String xxx),你傳userName=""是可以通過(guò)驗(yàn)證的,即可以required = true并不杜絕傳遞空值,只是驗(yàn)證傳遞的參數(shù)中是否含有userName。所以檢驗(yàn)參數(shù)的合法性一般還需要自行處理。
defaultValue: 為參數(shù)賦一個(gè)默認(rèn)值。 需要特別注意:如果設(shè)置了defaultValue,required設(shè)置將會(huì)失效,所以如果設(shè)置了defaultValue,就沒(méi)必要設(shè)置required了。
總結(jié)
到此這篇關(guān)于Spring中@RequestParam使用及遇到的一些坑的文章就介紹到這了,更多相關(guān)Spring @RequestParam使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot中的PropertySource原理詳解
這篇文章主要介紹了SpringBoot中的PropertySource原理詳解,PropertySource?是一個(gè)非常重要的概念,它允許您在應(yīng)用程序中定義屬性,并將這些屬性注入到?Spring?環(huán)境中,需要的朋友可以參考下2023-07-07MyBatis實(shí)現(xiàn)批量插入方法實(shí)例
最近在公司項(xiàng)目開(kāi)發(fā)中遇到批量數(shù)據(jù)插入或者更新,下面這篇文章主要給大家介紹了關(guān)于MyBatis實(shí)現(xiàn)批量插入的相關(guān)資料,需要的朋友可以參考下2022-10-10SpringBoot使用自定義注解實(shí)現(xiàn)權(quán)限攔截的示例
本篇文章主要介紹了SpringBoot使用自定義注解實(shí)現(xiàn)權(quán)限攔截的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09java date類(lèi)與string類(lèi)實(shí)例代碼分享
這篇文章主要介紹了java date類(lèi)與string類(lèi)實(shí)例代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01springboot yml中profiles的巧妙用法(小白必看多環(huán)境配置)
這篇文章主要介紹了springboot yml中profiles的巧妙用法,非常適合多環(huán)境配置場(chǎng)景,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04使用java + selenium + OpenCV破解網(wǎng)易易盾滑動(dòng)驗(yàn)證碼的示例
這篇文章主要介紹了使用java + selenium + OpenCV破解網(wǎng)易易盾滑動(dòng)驗(yàn)證碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02詳解jdbc實(shí)現(xiàn)對(duì)CLOB和BLOB數(shù)據(jù)類(lèi)型的操作
這篇文章主要介紹了詳解jdbc實(shí)現(xiàn)對(duì)CLOB和BLOB數(shù)據(jù)類(lèi)型的操作的相關(guān)資料,這里實(shí)現(xiàn)寫(xiě)入操作與讀寫(xiě)操作,需要的朋友可以參考下2017-08-08