SpringMVC由@PathVariable和资源冲突

时间:2013-08-20 08:16:29

标签: spring-mvc resources conflict path-variables

使用Spring MVC时遇到问题:

我写了一个Controller,一个名为的方法

@RequestMapping( “/ {MODULENAME} / {subModuleName}”)
public ModelAndView getModuleContent(@ PathVariable String moduleName,@ PathVariable String subModuleName){     
...
}
下,

现在问题是,当我访问静态资源时,例如:

http://www.mytomcat:8080/images/testpng

它会映射那个控制器,但我不想这样,我该如何解决冲突?

3 个答案:

答案 0 :(得分:1)

尝试为路径变量指定正则表达式模式:

@RequestMapping(value = "/{year:\\d+}/{month:\\d+}/**", method = RequestMethod.GET)

这有助于避免与<mvc:resources/>映射到/images/**之类的路径发生冲突。如果您的路径变量可以包含除&#39;之外的所有图像&#39;你可以试试这样的正则表达式:(?!images)

答案 1 :(得分:0)

您可以configure resource handlers查找/images等资源文件夹。

它应该有所帮助,因为这些处理程序的映射比/{moduleName}/{subModuleName}更具体,因此资源处理程序应该优先。

答案 2 :(得分:0)

相应地配置以下内容。

<mvc:resources mapping="/resources/**" location="/public-resources/"/>