如何在spring mvc中使webjars版本无关

时间:2015-10-16 09:47:00

标签: spring maven spring-mvc webjars

我按照here

所述的网站上的文档进行了操作

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

<mvc:resources mapping="/webjars/**" location="/webjars/"/>

然后我用以下

创建了一个控制器
@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);
    }
}

很少有依赖项丢失所以我在maven中添加了以下pom

<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;

这些都没有从外部jar中导入。

错误是:assetLocator cannot be resolved

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

1 个答案:

答案 0 :(得分:1)

documentation非常稀疏,但您可以使用new WebJarAssetLocator()创建资产定位器的实例。