如何在Spring MVC中绑定2个GET方法并使用@RequestMapping进行区分?

How to bind 2 GET methods in Spring MVC and distinguish using @RequestMapping?

我有 2 种不同的方法,两者都有相同的 url,但传入的参数集不同,我可以使用 @RequestMapping 正确映射它们吗?

@RequestMapping(value = "/someurl", method = RequestMethod.GET)
public ModelAndView methodA (
    @RequestParam(value = "param1", required = false) String param1,
    @RequestParam(value = "param2", required = false) String param2) {

    return null;
}

@RequestMapping(value = "/someurl", method = RequestMethod.GET)
public ModelAndView methodB (
    @RequestParam(value = "array", required = false) String[] array) {

    return null;
}

您可以根据请求参数的存在或不存在来缩小映射请求,例如

@RequestMapping(value = "/someurl", method = RequestMethod.GET, params={"!param1", "!param2"})
public ModelAndView methodB (
        @RequestParam(value = "array", required = false) String[] array) {

    return null;
}

仅当请求中没有 param1param2 时才会映射到 methodB,并将向框架提供如何区分这两个映射的信息,因此您不会启动时出现任何错误