我有一个带两种方法的控制器。一个用于删除另一个用户以从角色中删除用户。
@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) {
...
}
}
我的前端使用url进行jquery ajax调用,如下所示:
/rest/users/jdoe@foo.com/roles/some_role
这个uri被映射到deleteUser方法,username
等于some_role
我正在尝试让uri映射到deleteUserRole并将username
设置为jdoe@foo.com
并将role
设置为some_role
。
为什么uri不会映射到deleteUserRole? 它与RequestMappings中的正则表达式有关吗?
答案 0 :(得分:0)
可能是因为您的班级中有**
@RequestMapping注释,deleteUser
的映射将为/rest/users/**/{username:.+}
,而deleteUserRole
的映射将为/rest/users/**/{username:.+}/roles/{role:.+}
,第一个将匹配/rest/users/jdoe@foo.com/roles/some_role
模式。如果从类@RequestMapping注释
**
,它应该有效