以前工作中都是被動使用狀態,只是知道用@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
