我试图弄清楚如何通过URL将同一类的两个不同参数传递给控制器中的处理程序方法。例如,给定一个带有“id”参数的“Foo”类(我只说一个参数来保持它简单,但从一个带有它们的负载的类中思考),控制器的代码如下所示:
@Controller(value = "customerCareRemoteService")
public class CustomerCareRemoteServiceImpl {
// Othe methods/requests
@RequestMapping(value = "/" + "prueba" , method = RequestMethod.GET)
public @ResponseBody String prueba(Foo pFoo1, Foo pFoo2) {
//stupid and not interesting code
String answer = "pFoo1.id is " + pFoo1.id + ". pFoo2.id is " + pFoo2.id.";
System.out.println(answer);
return answer;
}
}
因此,当我调用此方法时,两个参数之间无法区分:
http://myfakeurl/prueba?id=1&id=2
我该如何处理?有没有办法“加”参数?我见过@RequestParam,但它对我不起作用,因为它不能用于我自己和美容的个人课程(或者我错了?)。另外我想避免包装类。谢谢你的时间。
答案 0 :(得分:1)
你应该使用@PathVariable来解决这个问题。
您的地图网址就是这样。
@RequestMapping(value = "/" + "prueba" + "/{id1}/{id2}" , method = RequestMethod.GET)
你职能部门的争论将是。
public @ResponseBody String prueba(@PathVariable int pFoo1, @PathVariable int pFoo2)
通过这种方式,您可以获得控制器中的ID以便使用它们进行进一步操作。
希望这有助于你。
干杯。
答案 1 :(得分:0)
所以,在一位同事的帮助下,我来到下一页谈论这个主题:
Customizing Parameter Names When Binding Spring MVC Command Objects
导致下一个StackOverFlow问题:
How to customize parameter names when binding spring mvc command objects
所以看起来没有像“使用注释X”这样的简单解决方案,但是要创建自己的解析器,并使用自定义注释(作为一个好新手,我仍然试图理解它:-S)。< / p>