2012-08-07 63 views
1

我有两种方法的控制器。一个删除另一个用户从角色中删除用户。RequestMapping与多种模式

@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/[email protected]/roles/some_role 

此URI被映射到deleteUser方法与username等于some_role

我试图让uri映射到deleteUserRole并将username设置为[email protected]role设置为some_role

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

回答

0

这是可能的,因为在你的类@RequestMapping注解**,你的deleteUser映射将/rest/users/**/{username:.+}deleteUserRole/rest/users/**/{username:.+}/roles/{role:.+},第一个将匹配到/rest/users/[email protected]/roles/some_role模式。它应该工作,如果**从类删除@RequestMapping注释

+0

谢谢。奇迹般有效。将类@RequestMapping annotion更改为“@RequestMapping(value =”/ rest/users“)' – km1 2012-08-07 16:40:24