我正在使用带注释的控制器开发 Spring MVC 项目。
我感兴趣的一件事是关于顺序@RequestMapping
待处理的指令。
例如,我想要所有/green/basic/welcome
要映射到GreenController.welcome()
but green/{treeId}/{treeName}
要映射到GreenController.viewTree(treeId, treeName)
.
我想我需要指定两个@RequestMapping
with @RequestMapping
of /green/basic/welcome
首先被处理,这样它就不会被解释为调用GreenControllerviewTree("basic", "welcome")
.
你们能指导我吗?
完全匹配 aRequestMapping
将优先于带有 a 的PathVariable
。因此,您将有两个请求映射,就像您指出的那样。一个用于处理特定的 url,而变量版本将捕获其他所有内容。 Spring 在检查路径变量匹配之前检查直接路径匹配,因此顺序并不重要,除非您有两个具有相同数量路径变量的请求映射,这可能会输出IllegalStateException
检查来源org.springframework.web.servlet.handler.AbstractHandlerMethodMapping具体情况。它被处理在lookupHandlerMethod()
.
确定两个的最佳匹配RequestMapping
不完全匹配的,compareTo() 方法RequestMappingInfo用来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)