我有以下映射:
@RequestMapping(value = "/", params = "!op")
public Iterable<User> getUserList() {
return userRepository.findAll();
}
我也有以下映射(可能有冲突):
@RequestMapping(value = "/", params = "op=delete")
@RequestMapping(value = "/",params = "op=update")
虽然整个班级都有一个映射
@RequestMapping("/user")
启动时,我在日志中有以下消息:
2015-12-26 20:11:25.103 INFO 5796 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/user/],params=[op=update]}" onto public com.inthemoon.pdk.data.User com.inthemoon.pdk.web.UserController.addUserByScreenName(java.lang.String,java.lang.String)
2015-12-26 20:11:25.105 INFO 5796 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/user/],params=[op=delete]}" onto public com.inthemoon.pdk.data.User com.inthemoon.pdk.web.UserController.deleteUserByScreenName(java.lang.String)
2015-12-26 20:11:25.105 INFO 5796 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/user/],params=[!op]}" onto public java.lang.Iterable<com.inthemoon.pdk.data.User> com.inthemoon.pdk.web.UserController.getUserList()
不幸的是,所讨论的映射不起作用,即当我请求时
http://localhost:8080/user
未触发映射方法。
为什么?
是否可以打开日志记录以便跟踪,Spring如何决定,在哪里映射请求?
答案 0 :(得分:3)
如果!op
旨在表示“没有op
参数”,则只需按照建议将其删除即可。
http://localhost:8080/user
未达到@RequestMapping
的原因是因为它缺少尾部斜杠(即方法上@RequestMapping
中的斜杠)。如果您删除!op
并向http://localhost:8080/user/
发出请求,则应按预期映射请求。