我有一个使用以下 RequestMapping 运行的现有 Spring MVC 服务。
@RequestMapping(value = "{user}/**", method = RequestMethod.GET)
我现在需要使用以下 RequestMapping 向同一个 Controller 添加一个新方法。
@RequestMapping(value = "api/{user}/**", method = RequestMethod.GET)
当我针对新 URL 进行测试时,Spring 总是选择第一个函数,以便这个 第二个功能无法访问。
无论如何,我可以让 Spring 使用我的新“api”方法吗?我能想到的唯一选择是在我的 web.xml 中创建一个新的 Java servlet,但我想做一些更简单的事情。我确实尝试使用 @Controller
和 @Controller("api")
制作两个不同的 Controller ,但这并没有解决问题。
最佳答案
假设您的 user
参数是 String
,Spring 假设您已经为用户调用了 api
。
有几种方法可以解决这个问题。第一个(也是最好的)是使您的请求映射更窄:完全指定映射,而不是依赖末尾的“**
”。
第二种方法是禁止“api”用户,使用regex在你的映射中。像下面这样的东西应该可以工作:
@RequestMapping(value = "{user:[^a][^p][^i]}/**", method = RequestMethod.GET)
关于java - 如何更正 Spring MVC RequestMapping 顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410609/