我已经为那个here.打开了一个问题但我也想问一下stackoverflow人。
@Controller
@RequestMapping("/xxx")
public class MyController {
@RequestMapping("/**")
public ModelAndView getPage() {
//some code
}
@RequestMapping("/**/yyy/")
public ModelAndView getPageSecond() {
//some code
}
@RequestMapping("/**/yyy/{pathVariable}")
public ModelAndView getPageThird(@PathVariable("pathVariable") Integer num) {
//some code
}
}
假设我们有一个简单的Controller,我发送这些请求:
1)/xxx/aaa/bbb/yyy/
- >好吧,它将使用getPageSecond
方法进行映射,并将完成他的工作。
2)/xxx/aaa/bbb/yyy/23
- >我认为它必须使用getPageThird
方法进行映射,但奇怪的是Spring正在通过getPage
方法捕获此请求。
我试图深入了解Spring代码以了解那里发生的事情,然后我找到了 AntPatternComparator 。这个比较器给出结果以便括号计数,将较小的一个用于最佳匹配。
为什么呢?第三个比其他人更具体,有什么不对吗?
答案 0 :(得分:1)
您可以手动将自己的RequestMappingHandlerMapping
版本添加到您的应用程序上下文中,并使用patternMatcher
将setPathMatcher(PathMatcher pathMatcher)
属性设置为您自己的实现,以解决您遇到的问题。< / p>