1

我目前有一个控制器可以同时处理 URL 组的 GET 和 POST:

@Controller
public class RestGroups {

...

    @RequestMapping(method = RequestMethod.GET, value = "/groups")
    @ResponseBody
    public GroupsDto groups() {
        return new GroupsDto(getGroups());
    }

    @RequestMapping(method = RequestMethod.POST, value = "/groups", headers = "Accept=application/xml")
    @ResponseBody
    public GroupsDto postGroup(@RequestBody GroupDto groupDto) {
        groupSaver.save(groupDto.createEntity());
        return groups();
    }

现在我想要两个控制器,它们都分配给相同的 URL,但每个都分配给不同的方法,如下所示:

@Controller
public class GetGroups {

...

    @RequestMapping(method = RequestMethod.GET, value = "/groups")
    @ResponseBody
    public GroupsDto groups() {
        return new GroupsDto(getGroups());
    }

...

}


@Controller
public class PostGroup {

...


    @RequestMapping(method = RequestMethod.POST, value = "/groups", headers = "Accept=application/xml")
    @ResponseBody
    public GroupsDto postGroup(@RequestBody GroupDto groupDto) {
        groupSaver.save(groupDto.createEntity());
        return groups();
    }

...
}

是否可以?因为现在我得到 Spring 异常,一个 URL 不能由两个不同的控制器处理。这个问题有解决方法吗?我真的很想将这两个完全不同的动作分成两个单独的类。

4

1 回答 1

1

这个限制已经在 Spring 3.1 中通过其新的 HandlerMethod 抽象来解决。您必须升级到 3.1.M2。如果你需要一个例子,请告诉我。

于 2011-08-15T13:01:33.330 回答