@RequestParam和@PathVariable能一起用吗?

ZXCV
  • 10

@RequestParam和@PathVariable一起使用时,访问 /page 和/page/123456 ,number无论如何都是1, 这是为啥?

    //测试
    @GetMapping({"/page","/page/{number}"})
    @ResponseBody
    public String paging(@RequestParam(defaultValue = "1",required = false)@PathVariable(value = "number",required = false) int number){
        System.out.println("当前是第 :"+number + " 页");
        return "";
    }

回复
阅读 3k
1 个回答
  • 1)HTTP协议的基本内容,比如:

GET /page/1234?number=456
这里面,1234对应@PathVariable
number=456对应@RequestParam。

  • 2)你写的代码中,@PathVariable@RequestParam参数形式都是number,这种情况有点复杂化了,一般不要这么做,至少参数名不要一样。
  • 3)最后,推导一下:

GET /page 或 /page/1234,方法体中取的是@RequestParam?number=为空,取默认值1,@PathVariable的参数其实被spring丢弃了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏