在 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)
此映射称为 default mapping pattern .
关于java - 匹配 Spring RequestMapping 中的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632790/