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