I already opened an issue for that here. But also i want to ask it to stackoverflow people.
@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
}
}
Assume that we have a simple Controller like that, and I am sending these requests :
1) /xxx/aaa/bbb/yyy/
-->okay it will be mapped with getPageSecond
method and will do his work.
2) /xxx/aaa/bbb/yyy/23
--> I think it must be mapped with getPageThird
method, but it is strange that Spring is catching this request via getPage
method.
I tried to dive into Spring codes to understand whats going on there, then i found AntPatternComparator. This comparator is giving result in order to bracket count, taking the lesser one for best match.
Why? Third one is more specific then others, is there something wrong ?