spring-mvc - Spring MVC中的有序RequestMapping

标签 spring-mvc

我正在使用带注释的 Controller 进行Spring MVC项目。
我感兴趣的一件事是处理@RequestMapping指令的顺序。
例如,我希望所有/green/basic/welcome都映射到GreenController.welcome()但是green/{treeId}/{treeName}要映射到GreenController.viewTree(treeId, treeName)

我想我需要先指定两个@RequestMapping@RequestMapping/green/basic/welcome一起处理,这样它才不会被解释为对GreenControllerviewTree("basic", "welcome")的调用。

你们可以在这方面指导我吗?

最佳答案

RequestMapping的完全匹配将优先于PathVariable的匹配。因此,您将像您指出的那样有两个请求映射。一个用于处理特定的URL,变量版本将捕获其他所有内容。 Spring在检查路径变量匹配之前先检查直接路径匹配,因此顺序无关紧要,除非您有两个具有相同数量路径变量的请求映射,这可能会吐出IllegalStateException
检查source of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping 的详细信息。它在lookupHandlerMethod()中处理。

要确定两个不完全匹配的RequestMapping的最佳匹配,请使用 RequestMappingInfo 的compareTo()方法。

关于spring-mvc - Spring MVC中的有序RequestMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326912/

相关文章:

Jquery POST 在 spring mvc 中给出 403 禁止错误

java - 当多个端点映射到同一路径时Spring MVC默认MIME类型

java - 在 Spring petclinic 中以 jsp jSTL 形式创建 boolean 字段

java - SpringSource Spring MVC 模板创建时出错

java - Spring 项目 - 未指定类世界配置

spring-mvc - 注释 Controller 的 Junit 测试

model-view-controller - 基于组件的 MVC 框架和基于 Action 的 MVC 框架

java - Spring 集成 Javascript

java - 在 Spring MVC 中使用文件上传和表单数据的 RESTful PUT

java - 如何使用Ajax进行jquery表单提交?