@RequestParam使用详解

@RequestParam使用详解

@RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上

首先我们需要知道@RequestParam注解主要有哪些参数

  1. value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value=“page”,则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据
  2. required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。
  3. defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties[‘java.vm.version’]}"
@ApiOperation(value = "获得工程列表(关键词 分页)")
@GetMapping(value = "/getList")
public CommonResult<?> getList(Principal principal, 
	@RequestParam(required = false,defaultValue="0",value="keyword") String keyword, 
	@Validated PagingParam pagingParam) {
    
    
	
	    SysUser user = userService.getItem(principal.getName());
	    if (user != null) {
    
    
	        Map<String, Object> map = projectService.getList(user, keyword, pagingParam);
	        return CommonResult.success(map);
	    } else {
    
    
	        return CommonResult.failed("用户不存在");
	    }
}

如果在请求中传入多个同名参数,比如:url?userName=zhl&userName=holley时怎么办?

其实此时传入的数据格式是:“zhl,holley”,即多个数据之间使用逗号分隔开,在后台接口中可以使用数组或者list类型的变量来接收:

public String 
requestparam8(@RequestParam(value="userName") String []  userNames) 

或者

public String requestparam8(@RequestParam(value="list") List<String> list) 

猜你喜欢

转载自blog.csdn.net/weixin_44860226/article/details/129626310