Spring请求映射通配符异常

Spring请求映射通配符异常,spring,url,spring-mvc,Spring,Url,Spring Mvc,我是否可以将/**通配符放在请求映射的中间位置,例如:“/some/resource/**/somthing” 在春季3我可以做到这一点 @RequestMapping("/some/resource/**") 绘制 /some/resource/A -> ControllerMethod1 /some/resource/A/B -> ControllerMethod1 /some/resource/A/B/C/D/E/F -> ControllerMethod1 对于任

我是否可以将/**通配符放在请求映射的中间位置,例如:“/some/resource/**/somthing”

在春季3我可以做到这一点

@RequestMapping("/some/resource/**")
绘制

/some/resource/A  -> ControllerMethod1
/some/resource/A/B -> ControllerMethod1
/some/resource/A/B/C/D/E/F -> ControllerMethod1
对于任意数量的路径零件

但是,此映射太贪婪,不允许我将子URL
@RequestMapping(“/some/resource/**/somthing”)
映射到另一个控制器,例如

/some/resource/A/somthing  -> ControllerMethod2
/some/resource/A/B/somthing -> ControllerMethod2
/some/resource/A/B/C/D/E/F/somthing -> ControllerMethod2

我该怎么做呢?

我认为不可能按照您的要求在url映射中使用ant样式,因为它将停止在下一个路径分隔符“/”上

我建议您尝试只映射请求的最后一部分(尚未尝试此方法)

此外,您还可以使用\u HANDLER\u MAPPING\u属性中的路径\u匹配请求的其余部分,并在那里应用一些表达式

否则,您应该使用请求参数来匹配该条件

您可以通过请求参数条件缩小请求匹配范围,例如“myParam”、“!myParam”或“myParam=myValue”。前两个测试用于测试请求参数是否存在,第三个测试用于测试特定参数值。下面是一个带有请求参数值条件的示例

在本例中,您将使用params映射类似的内容

@RequestMapping(value = {"/some/resource/**"},  params="somthing")
或者在方法签名中使用具有not required属性的注释请求参数:

public void test(@RequestParam(value = "somthing", required=false) String str) {