欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談@RequestParam 參數(shù)是否必須傳的問(wèn)題

 更新時(shí)間:2021年02月25日 14:33:11   作者:Tonels  
這篇文章主要介紹了淺談@RequestParam 參數(shù)是否必須傳的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

一、源碼展示

@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;
}

這是示例代碼

@GetMapping("/findById")
  public ResultBean byid(@RequestParam(defaultValue = "1",required = false,/*value = "ss",*/name = "ls") Integer id){
    List<Customers> all = customersService.findById(id);
    return ResultBean.ok(all);
  }

二、說(shuō)明

2.1 @RequestParam,對(duì)于參數(shù)入?yún)?,這個(gè)注解可以不必須有,但只能匹配和你定義的入?yún)?,完全一樣的名稱,對(duì)應(yīng)則匹配,不對(duì)應(yīng)就不匹配。

2.2 required ,是否必須,默認(rèn)為 true,也就是說(shuō),當(dāng)@RequestParam存在時(shí),是默認(rèn)required = true條件的,@RequestParam不存在時(shí),返回 2.1 的解釋。

2.3 defaultValue ,設(shè)置初始值,一般和required = false一起使用,如果不傳值,則使用默認(rèn)值。

2.4 value ,和name,一樣,給變量起別名,一一對(duì)應(yīng)于前端傳的屬性名,映射到后端接口變量名,有時(shí)前端無(wú)法按要求傳給你你所希望的變量名,這個(gè)就發(fā)揮用處了。

2.5 name ,和value一樣,給變量起別名,兩個(gè)同時(shí)存在時(shí),訪問(wèn)時(shí)就會(huì)出錯(cuò)。

補(bǔ)充:springMVC的@RequestParam是必須滴

先看下代碼:

@RequestMapping(value = "/campaigns/{pageNo}/{pageSize}", method = RequestMethod.GET)
public String getList(@PathVariable("pageNo") int pageNo, 
  @PathVariable("pageSize") int pageSize,
  @RequestParam(defaultValue = "0") int status,
  @RequestParam(required=false) String keyword) {
    //....
    return null;
}

1.@RequestParam

在上面代碼中,一般情況下@RequestParam不加,方法參數(shù)也一樣能獲取對(duì)應(yīng)綁定的數(shù)據(jù),所以很多人都認(rèn)為@RequestParam是可加可不加的。

直到后來(lái)才了解到,Java的反射機(jī)制生成的對(duì)象并不會(huì)保存包含方法的參數(shù),即參數(shù)名不會(huì)保留在class文件中,所以spring不能反射綁定。

那么問(wèn)題來(lái)了,為什么我們平時(shí)都能綁定呢?

這是因?yàn)?,在Debug模式開啟情況下,就能綁定,而我們一般用的eclipse都是默認(rèn)開啟的。

Debug模式下之所以能夠綁定,是因?yàn)樵趐roject–>Properties–>Java Compiler里選中了Add variable attributes to generated class files(used by the debugger)。

要知道,開啟Debug模式會(huì)影響性能的,所以正式上線的時(shí)候,都會(huì)關(guān)掉的,如果我們沒(méi)加的話就會(huì)報(bào)以下錯(cuò)誤:

Request processing failed;nested exception is java.lang.IllegalArgumentException:Name for argument type ….

2.@PathVariable

@PathVariable是用來(lái)指定獲取@RequestMapping里URL中占位符參數(shù)的字段,如上面的@PathVariable(“pageNo”) int pageNo中的pageNo字段就是為了獲取{pageNo}這個(gè)占位符的值。

@PathVariable括號(hào)里的名字必須與占位符的名字一致,而字段名可以不用一樣。

如果括號(hào)里不指定名字,則在非debug模式下也會(huì)遇到1的問(wèn)題

所以,@PathVariable括號(hào)里的名字是必須的。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Java接口自動(dòng)化測(cè)試框架設(shè)計(jì)之Get請(qǐng)求方法和測(cè)試詳解

    Java接口自動(dòng)化測(cè)試框架設(shè)計(jì)之Get請(qǐng)求方法和測(cè)試詳解

    這篇文章主要介紹了Java接口自動(dòng)化測(cè)試框架設(shè)計(jì) Get請(qǐng)求方法和測(cè)試,框架設(shè)計(jì)我們只是介紹基本的組件,而且框架設(shè)計(jì)沒(méi)有想象那么難,一步一步跟著做就會(huì)了。這篇我們來(lái)演示,如果通過(guò)Java代碼來(lái)實(shí)現(xiàn)一個(gè)用純代碼實(shí)現(xiàn)Http中的Get請(qǐng)求過(guò)程,需要的朋友可以參考下
    2019-07-07
  • java將文件轉(zhuǎn)成流文件返回給前端詳細(xì)代碼實(shí)例

    java將文件轉(zhuǎn)成流文件返回給前端詳細(xì)代碼實(shí)例

    Java編程語(yǔ)言提供了強(qiáng)大的文件處理和壓縮能力,下面這篇文章主要給大家介紹了關(guān)于java將文件轉(zhuǎn)成流文件返回給前端的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • java不用循環(huán)語(yǔ)句打印數(shù)組元素的實(shí)例

    java不用循環(huán)語(yǔ)句打印數(shù)組元素的實(shí)例

    下面小編就為大家?guī)?lái)一篇java不用循環(huán)語(yǔ)句打印數(shù)組元素的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Springboot 接收POST、json、文本數(shù)據(jù)的方法 附示例

    Springboot 接收POST、json、文本數(shù)據(jù)的方法 附示例

    這篇文章主要介紹了Springboot 接收POST、json、文本數(shù)據(jù)實(shí)踐,如果把 json 作為參數(shù)傳遞,我們可以使用 @requestbody 接收參數(shù),將數(shù)據(jù)直接轉(zhuǎn)換成對(duì)象,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • 淺談JMeter engine啟動(dòng)原理

    淺談JMeter engine啟動(dòng)原理

    本文主要介紹jmeter在控制臺(tái)在點(diǎn)擊執(zhí)行之后底層所做的一些主要事情及內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 在mybatis中使用mapper進(jìn)行if條件判斷

    在mybatis中使用mapper進(jìn)行if條件判斷

    這篇文章主要介紹了在mybatis中使用mapper進(jìn)行if條件判斷,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • springMVC幾種頁(yè)面跳轉(zhuǎn)方式小結(jié)

    springMVC幾種頁(yè)面跳轉(zhuǎn)方式小結(jié)

    本篇文章主要介紹了springMVC 幾種頁(yè)面跳轉(zhuǎn)方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Jmeter多種定時(shí)器實(shí)現(xiàn)方法解析

    Jmeter多種定時(shí)器實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Jmeter多種定時(shí)器實(shí)現(xiàn)方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java詳細(xì)分析講解自動(dòng)裝箱自動(dòng)拆箱與Integer緩存的使用

    Java詳細(xì)分析講解自動(dòng)裝箱自動(dòng)拆箱與Integer緩存的使用

    裝箱就是把基本類型轉(zhuǎn)換成包裝類,拆箱就是把包裝類轉(zhuǎn)換成基本類型,下面這篇文章主要給大家介紹Java中自動(dòng)裝箱、自動(dòng)拆箱與Integer緩存,需要的朋友可以參考下
    2022-04-04
  • java新人基礎(chǔ)入門之遞歸調(diào)用

    java新人基礎(chǔ)入門之遞歸調(diào)用

    這篇文章主要給大家介紹了關(guān)于java新人基礎(chǔ)入門之遞歸調(diào)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論