Spring 3 MVC请求参数映射。调用控制器中的处理程序时来自同一类的两个参数

时间:2012-05-10 14:48:54

标签: spring-mvc spring-3 spring-annotations

我试图弄清楚如何通过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,但它对我不起作用,因为它不能用于我自己和美容的个人课程(或者我错了?)。另外我想避免包装类。谢谢你的时间。

2 个答案:

答案 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>