SpringMVC中RequestParam注解的簡單理解
1、前言
作用:主要用于對前端請求的參數(shù)進(jìn)行一些約束,包括參數(shù)名不匹配問題、是否必須、默認(rèn)值!
這個注解非常簡單,準(zhǔn)確的說應(yīng)該是MVC中除了Controller之外最簡單的注解。
@Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolean required() default true; String defaultValue() default ValueConstants.DEFAULT_NONE; }
雖然有四個屬性實際上就三個,name屬性和value屬性一個意思,相互起別名跟對方一樣。
Target的元注解約束這個注解只能使用在參數(shù)上,Retention元注解表示這個注解的保存時間這里表示可以在運行時JVM反射加載到!
2、name/value屬性
這兩個屬性是當(dāng)前后端參數(shù)不匹配時進(jìn)行前后端參數(shù)轉(zhuǎn)換,即前端 - name/value - 后端參數(shù)!
一旦加了設(shè)置name/value表示這個參數(shù)必須傳遞,否則400錯誤。
這種做法很雞肋,不匹配直接照著前端改就行,有點畫蛇添足。
@RequestMapping("/hello2") public String get2(@RequestParam("a") String args, Model model){ model.addAttribute("value", args); return "hello"; }
3、required屬性
這個屬性是搭配name/value一起使用的,默認(rèn)不指定情況下是true。
上文中發(fā)現(xiàn)一旦設(shè)置了name/value表示這個參數(shù)必須要有,而required可以設(shè)置為false表示這個參數(shù)可有可無!
@RequestMapping("/hello3") public String get3(@RequestParam(name = "a", required = false) String args, Model model){ model.addAttribute("value", args); return "hello"; }
4、defaultValue屬性
表示在沒有傳遞參數(shù)的的情況下的該參數(shù)使用的默認(rèn)值。
一般搭配required=false一起使用!如果required=true必須指定那還需要默認(rèn)值干啥?
@RequestMapping("/hello4") public String get4(@RequestParam(name = "a", defaultValue = "這是默認(rèn)值", required = false) String args, Model model){ model.addAttribute("value", args); return "hello"; }
總結(jié)
到此這篇關(guān)于SpringMVC中RequestParam注解的文章就介紹到這了,更多相關(guān)SpringMVC RequestParam注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
idea數(shù)據(jù)庫驅(qū)動下載失敗的問題及解決
這篇文章主要介紹了idea數(shù)據(jù)庫驅(qū)動下載失敗的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01Java Swing實現(xiàn)的定制TextField功能示例
這篇文章主要介紹了Java Swing實現(xiàn)的定制TextField功能,結(jié)合實例形式分析了java swing組件TextField相關(guān)屬性功能與設(shè)置操作技巧,需要的朋友可以參考下2018-01-01Java CharacterEncodingFilter過濾器的理解和配置案例詳解
這篇文章主要介紹了Java CharacterEncodingFilter過濾器的理解和配置案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08基于java開發(fā)之系統(tǒng)托盤的應(yīng)用
本篇文章介紹了,基于java開發(fā)之系統(tǒng)托盤的應(yīng)用。需要的朋友參考下2013-05-05通過springboot+mybatis+druid配置動態(tài)數(shù)據(jù)源
這篇文章主要介紹了通過springboot+mybatis+druid配置動態(tài)數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下2019-06-06簡單實現(xiàn)Java版學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了簡單實現(xiàn)Java版學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06SpringBoot Java后端實現(xiàn)okhttp3超時設(shè)置的方法實例
Okhttp的使用沒有httpClient廣泛,網(wǎng)上關(guān)于Okhttp設(shè)置代理的方法很少,下面這篇文章主要給大家介紹了關(guān)于SpringBoot Java后端實現(xiàn)okhttp3超時設(shè)置的相關(guān)資料,需要的朋友可以參考下2021-10-10Spring中AOP概念與兩種動態(tài)代理模式原理詳解
AOP是面向切面編程的技術(shù),AOP基于IoC基礎(chǔ),是對OOP的有益補充,流行的AOP框架有Sping AOP、AspectJ,這篇文章主要給大家介紹了關(guān)于Spring中AOP概念與兩種動態(tài)代理模式原理的相關(guān)資料,需要的朋友可以參考下2021-10-10Java 實戰(zhàn)項目之疫情人員流動管理系統(tǒng)詳解
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個疫情人員流動管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11