SpringMVC 注解 @RequestParam全面解析


以前工作中都是被動使用狀態,只是知道用@RequestParam注解能夠接收到參數,但是不知道具體的原理。經過這次的實踐,終於明白了很多。

@RequestParam注解的作用是:

1、可以對傳入參數指定參數名

 

首先是接收參數的接口層(ClassNodeResource.java):如果設置了參數為required = true,在表示該參數是必填狀態,required = false表示可不填。

@Api(tags = "時間資源_節次信息")
@RequestMapping("/classNode")
public interface ClassNodeResource {

  @ApiOperation("添加時間資源_沿用節次")

	@RequestMapping(value = "/followClassNode", method = RequestMethod.GET)
	Result<?> followClassNode(
		@ApiParam(value = "目標學年學期", required = false) String targetSemesterId,
		@ApiParam(value = "來源學年學期", required = true) String sourceSemesterId);
    }
}

  使用swagger測試的效果圖:

controller層:

如果接收接口中的ClassNodeResource.java的參數時,沒有設置@RequestParam("targetSemesterId")的情況,是接收不到參數值的 :

@Override
	public Result<?> followClassNode(String targetSemesterId,
			 String sourceSemesterId) {
		classNodeService.followClassNode(targetSemesterId, sourceSemesterId);
		return Result.buildSuccessResult();
	}

  使用

@RequestParam(value = "targetSemesterId", required = true)表示參數名叫做
targetSemesterId
,必填
@Override
	public Result<?> followClassNode(
			@RequestParam(value = "targetSemesterId", required = true) String targetSemesterId,
			@RequestParam(value = "sourceSemesterId", required = true) String sourceSemesterId) {
		classNodeService.followClassNode(targetSemesterId, sourceSemesterId);
		return Result.buildSuccessResult();
	}

  

效果圖如下:

使用需要注意的是:

 

 

 

前端傳參如下:

 傳參的例子如:

 

============================================

從網上摘錄別人的總結:

1、可以對傳入參數指定參數名

1 @RequestParam String inputStr  
2 // 下面的對傳入參數指定為aa,如果前端不傳aa參數名,會報錯  
3 @RequestParam(value="aa") String inputStr  
2、可以通過required=false或者true來要求@RequestParam配置的前端參數是否一定要傳 

1 // required=false表示不傳的話,會給參數賦值為null,required=true就是必須要有  
2 @RequestMapping("testRequestParam")    
3     public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, HttpServletRequest request) 
3、如果@requestParam注解的參數是int類型,並且required=false,此時如果不傳參數的話,會報錯。原因是,required=false時,不傳參數的話,會給參數賦值null,這樣就會把null賦值給了int,因此會報錯。

1 // required=false表示不傳的話,會給參數賦值為null,required=true就是必須要有  
2 @RequestMapping("testRequestParam")    
3 public String filesUpload(@RequestParam(value="aa", required=false) int inputStr, HttpServletRequest request) 
4 若是前端頁面不傳參的話,此處就會報錯。當然可以用Integer代替int

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM