Dav*_*d V 5 java spring spring-mvc
我有一个使用以下 RequestMapping 运行的现有 Spring MVC 服务。
@RequestMapping(value = "{user}/**", method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)
我现在需要使用以下 RequestMapping 向同一个控制器添加一个新方法。
@RequestMapping(value = "api/{user}/**", method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)
当我针对新 URL 进行测试时,Spring 总是选择第一个函数,因此无法访问第二个函数。
无论如何,我可以让 Spring 使用我的新“api”方法吗?我能想到的唯一选择是在我的 web.xml 中创建一个新的 Java servlet,但我想做一些更简单的事情。我确实尝试使用@Controller
和制作两个不同的控制器@Controller("api")
,但这并没有解决问题。
假设您的参数为user
is String
,Spring 假设您已被调用为 user api
。
有几种方法可以解决这个问题。第一个(也是最好的)是使您的请求映射更窄:完全指定映射,而不是依赖于**
末尾的“”。
第二种方法是在映射中使用正则表达式来禁止“api”用户。像下面这样的东西应该有效:
@RequestMapping(value = "{user:[^a][^p][^i]}/**", method = RequestMethod.GET)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5927 次 |
最近记录: |