如何修正Spring MVC RequestMapping命令?

时间:2014-03-14 16:23:44

标签: java spring spring-mvc

我使用以下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")制作两个不同的控制器,但这并没有解决问题。

1 个答案:

答案 0 :(得分:2)

假设user的参数为String,Spring假设您已为用户api调用。

有几种方法可以解决这个问题。第一个(也是最好的)是使您的请求映射更加狭窄:完全指定映射,而不是最后依赖“**”。

第二种方法是在您的映射中使用regex禁止“api”用户。以下内容应该有效:

@RequestMapping(value = "{user:[^a][^p][^i]}/**", method = RequestMethod.GET)