Spring MVC – 请求映射,两个具有两个不同参数的URL

在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指定资源或操作,并且在两个控制器(表示不同的行为)中不能以完全相同的方式命名。

你有两个选择:

  • 使用不同的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)列出所有可能的参数。

你可以像这样为你的处理程序提供多个映射

 @RequestMapping(value={"", "/", "welcome"}) public void handleAction(@ModelAttribute("A") A a, ...) { } 

但是,如果要为每个映射使用不同的参数,则必须提取方法。

像这样的东西

 @RequestMapping(value={"URL1"}, method=RequestMethod.POST) public String handleSubmit(@ModelAttribute("A") A command, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { return helperSubmit(); } @RequestMapping(value={"URL2"}, method=RequestMethod.POST) public String handleSubmit(@ModelAttribute("A") A command, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { return helperSubmit(); } private helperSubmit() { return "redirect:" + someUrl; }