1

我有一个有两种方法的控制器。一个用于删除用户,另一个用于从角色中删除用户。

    @Controller
    @RequestMapping(value="/rest/users/**")
    public class UsersCtrlr {

        @RequestMapping(value="/{username:.+}", method=RequestMethod.DELETE)
        public @ResponseBody HttpStatusDoc deleteUser(HttpServletRequest req, @PathVariable String username) {
         ...
        }

        @RequestMapping(value="/{username:.+}/roles/{role:.+}", method=RequestMethod.DELETE)
        public @ResponseBody HttpStatusDoc deleteUserRole(HttpServletRequest req, @PathVariable String username, @PathVariable String role) {
         ...
        }
    }

我的前端使用如下网址进行 jquery ajax 调用:

/rest/users/jdoe@foo.com/roles/some_role

此 uri 被映射到 deleteUser 方法,其username等于some_role

我正在尝试让 uri 映射到 deleteUserRole 并将username设置为jdoe@foo.comrole设置为some_role.

为什么 uri 不会映射到 deleteUserRole?它与RequestMappings中的正则表达式有关吗?

4

1 回答 1

0

这可能是因为**在您的类 @RequestMapping 注释中,您的映射deleteUser将是/rest/users/**/{username:.+}deleteUserRole将是/rest/users/**/{username:.+}/roles/{role:.+},第一个将与/rest/users/jdoe@foo.com/roles/some_role模式匹配。**如果从类 @RequestMapping 注释中删除它应该可以工作

于 2012-08-07T16:05:49.193 回答