我從做cs轉到bs,經常使用@requestparam這個註解,那麼@requestparam的原理到底是什麼呢?
文中對該註解進行原理解析,需要的可以參照一下文中解釋 。
該註解的作用在方法傳遞的引數前,用於接收所傳引數,適用於get請求。
例如:
可以用來接收問號後面的引數值(允許多個引數)
postman中是這樣子的。
指定傳入的引數名稱,其後面跟的引數名稱一定要與前端傳入的引數名稱一致。
2.2 value
指定傳入的引數名稱,其後面跟的引數名稱一定要與前端傳入的引數名稱一致。
2.3 required
指定引數是否是必傳引數,如果不指定,預設為true。
2.4 defaultvalue
指定引數的預設值。
注意:其中name和value屬性的作用等同的.其原始碼中name的別名就是value,value的別名就是name 。
2.5 參見@requestparam原始碼
@target()
@retention
(retentionpolicy.runtime)
@documented
public @inte***ce
requestparam
3.1 @requestparam可以解決前後端定義的引數名不一致的問題
例如前端傳入的引數名是name,後端方法接收的引數名是username,這時可以通過@requestparam指定value的值為name,實現name與username的對映。
(method = requestmethod.get, value =
"selectcourseandteacherbystudent"
)public course selectcourseandcoursebystudent
(@requestparam
(value =
"name"
) string username)
3.2 如果後端使用的是基本資料型別來接收引數,那麼一定要設定required=false,並且要設定乙個預設值
(method = requestmethod.get,value =
"selectstudentbyid"
)public student selectstudentbyid
(@requestparam
(value =
"id"
,required =
false
,defaultvalue =
"01"
)int id)
因為考慮到前端沒有傳值的情況,如果此時僅僅設定了required=false,會報500錯誤(下圖異常)因為基本資料型別無法接收null,
3.3 如果後端使用的是引用資料型別,則無需設定required=false和defaultvalue
因為即使前端沒有傳入引數值,引用資料型別是可以接收null的。
(method = requestmethod.get,value =
"selectstudentbyid"
)public student selectstudentbyid
(@requestparam
(value =
"id"
) integer id)
建議使用這種方式來寫。
Spring註解 RequestParam全面解析
1 可以對傳入引數指定引數名 requestparam string inputstr 下面的對傳入引數指定為aa,如果前端不傳aa引數名,會報錯2 下面的對傳入引數指定為aa,如果前端不傳aa引數名,會報錯 requestparam value aa string inputstr3 reques...
RequestParam註解使用
1 作用 requestparam 將請求引數繫結到你控制器的方法引數上 是springmvc中接收普通引數的註解 2 語法 語法 requestparam value 引數名 required true false defaultvalue value 引數名 required 是否包含該引數,預...
RequestParam註解使用
當前端請求方式為 x www form urlencoded 後端怎樣接收呢?第一種場景 當前端傳遞的引數和後端定義接收的變數一致 例如 前端 username 後端接收定義的變數username 後端接收方式 restcontroller slf4j public class usercontro...