我使用以下RequestMapping运行现有的Spring MVC服务。
@RequestMapping(value = "{user}/**", method = RequestMethod.GET)
我现在需要使用以下RequestMapping将新方法添加到同一个控制器。
@RequestMapping(value = "api/{user}/**", method = RequestMethod.GET)
当我测试新的URL时,Spring总是选择第一个函数 第二个功能无法访问。
无论如何,我可以让Spring使用我的新“api”方法吗?我能想到的唯一选择是在我的web.xml中创建一个新的Java servlet,但我想做一些更简单的事情。我尝试使用@Controller
和@Controller("api")
制作两个不同的控制器,但这并没有解决问题。
答案 0 :(得分:2)
假设user
的参数为String
,Spring假设您已为用户api
调用。
有几种方法可以解决这个问题。第一个(也是最好的)是使您的请求映射更加狭窄:完全指定映射,而不是最后依赖“**
”。
第二种方法是在您的映射中使用regex禁止“api”用户。以下内容应该有效:
@RequestMapping(value = "{user:[^a][^p][^i]}/**", method = RequestMethod.GET)