当前位置: 首页 > 知识库问答 >
问题:

spring MVC@Path变量值为空

徐洋
2023-03-14

@RequestMapping(value = "/api/user/{id}", method = RequestMethod.GET)  
public void get(@RequestParam("name")  String name, @PathVariable Integer id); {

        System.out.println("name="+name);
        System.out.println("id="+id)
}

URL:
http://localhost:8080/api/user/2?name=neeru

输出:
name=neeru
id=null

我也试过

**@RequestMapping(value = "/api/user/id={id}", method = RequestMethod.GET)** 

URL:
http://localhost:8080/api/user/id=2?name=neeru但获取相同的id值=null

我又添加了一个方法-只有@pathvariable

@RequestMapping(path="/api/user/name/{name}", method = RequestMethod.GET)    
   void get( @PathVariable("value=name") String name){

   System.out.println("name="+name)
}

但结果与路径变量值name=null相同

共有2个答案

南宫才艺
2023-03-14

@pathvariable用于提取路径中的变量,就像MystyxMac建议的那样。如果要提取查询参数,则必须使用@RequestParam

但您的示例是path和query参数的混合。

不能在URL中使用=,因为这是一个保留字符:https://www.w3.org/addressing/URL/url-speck.txt

所以要么使用

/api/user/{id} with @PathVariable 

/api/user?id={id} with @RequestParam
杭英杰
2023-03-14
  1. @pathvariable是从URI中获取一些占位符
  2. @RequestParam将获取参数

像这样更改终结点

http://localhost:8080/api/user/2/users?name=neeru

`

@RequestMapping(value = "api/user/{id}/users", method = RequestMethod.GET)  
public void get(@RequestParam("name")  String name, @PathVariable("id") Integer id); {
        System.out.println("name="+name);
        System.out.println("id="+id)
}

`

输出:

名称=neeru

id=2

 类似资料:
  • 我有一个关于在AMPPS中为PHP脚本设置“$PATH”变量的问题(在OSX 10.10 Yosemite上)。 AMPPS中的PHP似乎以我的用户“danny”的身份运行,但是它看到的$PATH是不同的。以下是我在终端上看到的:Dannys MacBook Air:AMPPS danny$echo$PATH/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

  • 我最近通过Homebrew在我的Mac上安装了Apache 2.4。(我以前使用苹果提供的Apache。) 在PHP脚本中,我对位于/usr/local/bin中的可执行文件调用Exec(x),但它失败了,因为/usr/local/bin未包含在Apache的PATH环境变量中。运行phpinfo()显示路径为/usr/bin:/bin:/usr/sbin:/sbin。 我以前在/System/L

  • C:\python27\arcgis10.1;C:\python27\arcgis10.1\scripts;C:\python27\arcgis10.1\lib\site-packages\osgeo;C:\program Files(x86)\common Files\intergraph\grid Analysis sdk\1.0\program;%systemroot%\systemroot

  • 3.1.1.设置PATH环境变量 Android SDK里有个目录,主要的工具都在里面。我们将会频繁地用到这些工具,因此把你的~/android-sdk/tools/目录加入系统的环境变量PATH会是个好办法,这一来就不需要每次使用它们时都切换目录了。 不同系统设置环境变量的方式各有不同,详见Installing Android SDK页面中的第二步。 (译注:Installing Android

  • 我的Python程序有问题。在IDE(间谍IDE)上运行此程序时,我没有得到任何错误,并且它工作得很好。否则,如果我在python IDLE中运行它,我会得到以下错误。 我认为这个错误与Python路径环境变量有关,因为我找不到该模块。