如何在SpringMVC中使webjars版本不可知

如何在SpringMVC中使webjars版本不可知,spring,maven,spring-mvc,webjars,Spring,Maven,Spring Mvc,Webjars,我遵循了他们网站上的文档说明 首先,我添加了所需的路径 然后,我创建了一个具有以下内容的控制器 @ResponseBody @RequestMapping("/webjarslocator/{webjar}/**") public ResponseEntity locateWebjarAsset(@PathVariable String webjar, HttpServletRequest request) { try { String mvcPrefix = "/we

我遵循了他们网站上的文档说明

首先,我添加了所需的路径

然后,我创建了一个具有以下内容的控制器

@ResponseBody
@RequestMapping("/webjarslocator/{webjar}/**")
public ResponseEntity locateWebjarAsset(@PathVariable String webjar, HttpServletRequest request) {
    try {
        String mvcPrefix = "/webjarslocator/" + webjar + "/"; // This prefix must match the mapping path!
        String mvcPath = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
        String fullPath = assetLocator.getFullPath(webjar, mvcPath.substring(mvcPrefix.length()));
        return new ResponseEntity(new ClassPathResource(fullPath), HttpStatus.OK);
    } catch (Exception e) {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}
这些都不是从外部jar导入的

错误是:
无法解析assetLocator


编辑:可能是我需要创建一个过滤器,而不是将其放在控制器中。对此有什么想法吗?

非常稀少,但是您可以使用
新的WebJarAssetLocator()
创建资产定位器的实例,这里有另一个解决方案,考虑到WebJar的最新版本,对于任何遇到这个问题的人来说都是类似的。使用
org.webjars.play.WebJarsUtil#locate(java.lang.String,java.lang.String)
(依次使用
org.webjars.WebJarAssetLocator#getFullPath(java.lang.String,java.lang.String)
)接受WebJar名称(作为作用域)无需提供包含版本的完整路径的文件。

您在哪里定义了
assetLocator
?@zeroflagL无处,我的问题是如何定义一个
新的WebJarAssetLocator()
…非常感谢我一直在尝试
新的assetLocator()
未解决的问题请回答此问题,我将接受我希望通过请求改善这些文档:
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>webjars-locator</artifactId>
    <version>0.28</version>
</dependency>
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.servlet.HandlerMapping;
import org.springframework.core.io.ClassPathResource;