【发布时间】:2015-02-20 15:41:25
【问题描述】:
在 Spring MVC 休息服务上,我在尝试匹配超出我配置的 RequestMapping 值的任何内容时遇到问题。
所以例如我有这个:
@RequestMapping(value = "{configKey}/{arguments:.*}", method = RequestMethod.GET)
这表示匹配第二个路径变量之外的任何内容。问题是这例如适用于:
get("/test/document")
虽然这以 404 结束:
get("/test/document/download")
Spring 不能处理这个正则表达式很奇怪。我实际上尝试了很多解决方案,但都没有奏效。
以前我在 JAX-RS 上进行过这样的配置:
@Path("/{configKey}/{arguments:.*}")
一切都很好,但现在我正在迁移并遇到这个问题。
有谁知道发生了什么以及如何解决这个问题?
编辑:
添加{configKey}/** - 不起作用
添加{configKey}/{arguments}/** 有效,但对于例如如果我打电话:
get("/test/document/download") 我只得到test 作为我的配置键和document 作为参数。在论点中,我希望得到{configKey} 之外的所有内容。这可以是任何东西,例如它应该在任何情况下都可以工作:
get("/test/document")
get("/test/document/download")
get("/test/document/download/1")
get("/test/document/download/1/2")
get("/test/whatever/xxx/1/2/etc")
使用 JAX-RS 的配置:@Path("/{configKey}/{arguments:.*}")
【问题讨论】:
-
您期望有多少个参数?你知道确切的数字吗?
-
不,这就是重点,它是动态的,可以是任意数量的参数。
-
你能不能试着把它改成@RequestMapping(value = "{configKey}/**", method = RequestMethod.GET)?
-
对不起帕特里克,如果我及时看到你的评论不会回答,我们甚至可以交换,你回答,我删除:)
-
我已经编辑了我的问题,请看一下。
标签: java spring rest spring-mvc request-mapping