SpringMVC中RequestParam注解的簡(jiǎn)單理解
1、前言
作用:主要用于對(duì)前端請(qǐng)求的參數(shù)進(jìn)行一些約束,包括參數(shù)名不匹配問(wèn)題、是否必須、默認(rèn)值!
這個(gè)注解非常簡(jiǎn)單,準(zhǔn)確的說(shuō)應(yīng)該是MVC中除了Controller之外最簡(jiǎn)單的注解。
@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;
}
雖然有四個(gè)屬性實(shí)際上就三個(gè),name屬性和value屬性一個(gè)意思,相互起別名跟對(duì)方一樣。
Target的元注解約束這個(gè)注解只能使用在參數(shù)上,Retention元注解表示這個(gè)注解的保存時(shí)間這里表示可以在運(yùn)行時(shí)JVM反射加載到!
2、name/value屬性
這兩個(gè)屬性是當(dāng)前后端參數(shù)不匹配時(shí)進(jìn)行前后端參數(shù)轉(zhuǎn)換,即前端 - name/value - 后端參數(shù)!
一旦加了設(shè)置name/value表示這個(gè)參數(shù)必須傳遞,否則400錯(cuò)誤。
這種做法很雞肋,不匹配直接照著前端改就行,有點(diǎn)畫蛇添足。
@RequestMapping("/hello2")
public String get2(@RequestParam("a") String args, Model model){
model.addAttribute("value", args);
return "hello";
}

3、required屬性
這個(gè)屬性是搭配name/value一起使用的,默認(rèn)不指定情況下是true。
上文中發(fā)現(xiàn)一旦設(shè)置了name/value表示這個(gè)參數(shù)必須要有,而required可以設(shè)置為false表示這個(gè)參數(shù)可有可無(wú)!
@RequestMapping("/hello3")
public String get3(@RequestParam(name = "a", required = false) String args, Model model){
model.addAttribute("value", args);
return "hello";
}

4、defaultValue屬性
表示在沒(méi)有傳遞參數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA創(chuàng)建Servlet程序的兩種實(shí)現(xiàn)方法
Servlet是JavaWeb應(yīng)用程序中不可或缺的組件之一,本文主要介紹了IDEA創(chuàng)建Servlet程序的兩種實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Java調(diào)用wsdl接口的兩種方法(axis和wsimport)
本文主要介紹了Java調(diào)用wsdl接口的兩種方法(axis和wsimport),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Java采用循環(huán)鏈表結(jié)構(gòu)求解約瑟夫問(wèn)題
這篇文章主要介紹了Java采用循環(huán)鏈表結(jié)構(gòu)求解約瑟夫問(wèn)題的解決方法,是很多Java面試環(huán)節(jié)都會(huì)遇到的經(jīng)典考題,這里詳細(xì)給出了約瑟夫問(wèn)題的原理及Java解決方法,是非常經(jīng)典的應(yīng)用實(shí)例,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12

