Spring MVC-请求映射,两个带有两个不同参数的网址


问题内容

在Spring中,是否可能有一个方法,其中每个方法的两个参数都具有不同的参数,而两个URL却不同?

下面是伪代码

@RequestMethod(URL1-param1, URL2-param2)
public void handleAction(@ModelAttribute("A") A a, ...) {
}

同时,ULR1在其他一些控制器中被映射为

@RequestMethod(URL1)
public void handleAction1(@ModelAttribute("A") A a, ...) {
}

问题答案:

更新:看来您的问题完全不同。

不,您不能在不同的控制器中使用相同的网址和不同的参数。而且这没有多大意义-
url指定了资源或操作,并且不能在两个控制器中以完全相同的方式命名(表示不同的行为)。

您有两种选择:

  • 使用不同的URL
  • 在misc控制器中使用一种方法,该方法根据请求参数调度到不同的控制器(被注入)。

原始答案:

不会。但是您可以有两种方法可以完成相同的操作:

@RequestMethod("/foo")
public void foo(@ModelAttribute("A") A a) {
    foobar(a, null);
}

@RequestMethod("/bar")
public void bar(@ModelAttribute("B") B b) {
    foobar(null, b);
}

如果我没有正确理解,并且您想要相同的ModelAttribute,则只需:

@RequestMapping(value={"/foo", "/bar"})

最后-如果您需要不同的请求参数,则可以@RequestParam(required=false)用来列出所有可能的参数。