【发布时间】:2015-05-04 23:31:07
【问题描述】:
我正在尝试将 WebJars-Locator 与 Spring-Boot 应用程序一起使用来映射 JAR 资源。根据他们的website,我创建了一个这样的 RequestMapping:
@ResponseBody
@RequestMapping(method = RequestMethod.GET, value = "/webjars-locator/{webjar}/{partialPath:.+}")
public ResponseEntity<ClassPathResource> locateWebjarAsset(@PathVariable String webjar, @PathVariable String partialPath)
{
问题在于 partialPath 变量应该包含第三个斜线之后的任何内容。然而,它最终会限制映射本身。此 URI 映射正确:
http://localhost/webjars-locator/angular-bootstrap-datetimepicker/datetimepicker.js
但是这个根本没有映射到处理程序,只是返回一个 404:
http://localhost/webjars-locator/datatables-plugins/integration/bootstrap/3/dataTables.bootstrap.css
根本区别只是路径中应该由正则表达式(“.+”)处理但在该部分有斜杠时似乎不起作用的组件数量。
如果有帮助,会在日志中提供:
2015-03-03 23:03:53.588 INFO 15324 --- [main] swsmmaRequestMappingHandlerMapping:映射“{[/webjars-locator/{webjar}/{partialPath:.+}],methods=[GET] ,params=[],headers=[],consumes=[],produces=[],custom=[]}" 到公共 org.springframework.http.ResponseEntity app.controllers.WebJarsLocatorController.locateWebjarAsset(java.lang.String, java.lang.String) 2
Spring-Boot 中是否有某种隐藏设置可以在 RequestMappings 上启用正则表达式模式匹配?
【问题讨论】:
-
我创建了一个示例项目来重现该问题。此 URL 无效
http://localhost:8080/webjars-locator/angular-bootstrap/datetimepicker/datetimepicker.js。但是,http://localhost:8080/gradle-spring-mvc-web-project/webjars-locator/angular-bootstrap/datetimepicker.js工作正常。 @robross - 请确认。 -
我绝对肯定哪些项目正确解析,哪些没有。但是,我确实注意到示例中有一个字符拼写错误并修复了它。对此感到抱歉。
-
@Mithun,您的项目似乎与我的有所不同。我不需要将我的“项目”的路径放在 URL 中。
标签: regex spring spring-mvc spring-boot webjars