Rob*_*ely 13 url spring spring-mvc
我可以将/**通配符放在请求映射的中间,例如:"/ some/resource/**/somthing"
在Spring 3中,我可以做到这一点
@RequestMapping("/some/resource/**")
Run Code Online (Sandbox Code Playgroud)
来图
/some/resource/A -> ControllerMethod1
/some/resource/A/B -> ControllerMethod1
/some/resource/A/B/C/D/E/F -> ControllerMethod1
Run Code Online (Sandbox Code Playgroud)
对于任何数量的路径部分
但是这个映射太贪婪了,不允许我将子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
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
jmv*_*tar 10
我认为不可能根据需要在url映射中使用该ant样式,因为它将在下一个路径分隔符' / ' 上停止.
我建议你试试16.3.2.2.具有正则表达式的URI模板模式,以便仅映射请求的最后部分(尚未尝试此方法).
您还可以使用PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE匹配请求的其余部分,并在那里应用一些表达式.查看这篇文章.
否则,您应该使用请求参数来匹配该条件16.3.2.6.请求参数和标头值.
您可以通过请求参数条件缩小请求匹配,例如"myParam","!myParam"或"myParam = myValue".前两个测试请求参数presense/absence,第三个测试特定参数值.以下是具有请求参数值条件的示例.
在这种情况下,您将使用参数映射类似的东西
@RequestMapping(value = {"/some/resource/**"}, params="somthing")
Run Code Online (Sandbox Code Playgroud)
或者在方法签名中使用带有not required属性的注释请求参数:
public void test(@RequestParam(value = "somthing", required=false) String str) {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25210 次 |
最近记录: |