如何在Spring控制器的Url中传递多个变量?

时间:2014-04-29 17:56:59

标签: java spring spring-mvc

我想将url中的两个变量传递给我的Spring Controller。

我试图使用以下代码实现此目的。 控制器虽然只读取第二个参数。

我在这里缺少什么?

@RestController
@RequestMapping("/service/getVars")
public class SpringServiceController {
    @RequestMapping(value = "/Id/{Id}/Name/{Name}", method = RequestMethod.GET)
    public String getGreeting(@PathVariable String Id, @PathVariable String Name) {
         //Both id and name now holds Name variables value. 
         System.out.println("Id: "+ Id + " >> Name: " + Name);

    }
} 

i / p:localhost:8080/service/getVars/Id/111/Name/222

o / p:Id: 222 >> Name: 222

预期o / p:Id: 111 >> Name: 222

2 个答案:

答案 0 :(得分:3)

这可能取决于您编译源代码的方式。如果参数名称不包含在字节代码中,我认为没有定义@PathVariable没有value属性的行为。明确添加

@RequestMapping(value = "/Id/{Id}/Name/{Name}", method = RequestMethod.GET)
public String getGreeting(@PathVariable(value = "Id") String Id, @PathVariable(value = "Name") String Name) {

答案 1 :(得分:0)

您可以使用@PathVariable将任意数量的值传递给控制器​​。你可以阅读这个简单的example