Spring boot webjars:无法通过webjar加载javascript库

时间:2015-09-21 00:45:14

标签: java spring-boot thymeleaf webjars

我有一个spring boot(我使用Thymeleaf进行模板化)项目,我想使用一些jQuery库。

不幸的是,webjars根本没有加载。我尝试了很多配置,但都失败了。

以下是我的HTML网页的代码段:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">

<title>JAC</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<script src="http://cdn.jsdelivr.net/webjars/jquery/2.1.4/jquery.js"
        th:src="@{/webjars/jquery/2.1.4/jquery.min.js}" type="text/javascript"></script>
<script src="http://cdn.jsdelivr.net/webjars/jquery-file-upload/9.10.1/jquery.fileupload.js"  type="text/javascript"
        th:src="@{/webjars/jquery-file-upload/9.10.1/jquery.fileupload.min.js}"></script>
<link href="http://cdn.jsdelivr.net/webjars/bootstrap/3.3.5/css/bootstrap.min.css"
      th:href="@{/webjars/bootstrap/3.3.5/css/bootstrap.min.css}"
      rel="stylesheet" media="screen" />
<link href="http://cdn.jsdelivr.net/webjars/jquery-file-upload/9.10.1/jquery.fileupload.css"
      rel="stylesheet" media="screen" />
</head>

我已将它们添加到pom文件中:

<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>jquery</artifactId>
    <version>2.1.4</version>
</dependency>
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>3.3.5</version>
</dependency>

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery-file-upload</artifactId>
    <version>9.10.1</version>
</dependency>

但是在调用页面时,我在jquery.min.js和jquery.fileupload.min.js上获得了404.

GET http://localhost:8888/webjars/jquery-file-upload/9.10.1/jquery.fileupload.min.js 
2015-09-21 02:02:04.059 home:9 
GET http://localhost:8888/webjars/jquery/2.1.4/jquery.min.js 404 (Not Found)

7 个答案:

答案 0 :(得分:22)

您正在引用jquery库。也许您缺少资源处理程序配置。

<mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/>

或者如果您使用JavaConfig

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  }

}

Webjars documentation

如果这不起作用,请检查你是否在classpath上有webjars(在7Zip中打开你的应用程序JAR并检查webjars资源是否在其中。)

答案 1 :(得分:3)

在检查了jjery的webjar后,我通过添加一个&#34; dist&#34;子路径。

<script src="webjars/jquery/2.1.4/dist/jquery.min.js" type="text/javascript"></script>

答案 2 :(得分:1)

我最终做了一个mvn clean install(来自cmd提示符)以清除目标并正确填充所有lib / jars。我正在使用Intelij的Spring启动。

答案 3 :(得分:1)

在一个博客上找到了其他答案:

  

使用Spring Framework 4.2或更高版本时,它将   自动检测classpath上的webjars-locator库,并   使用它来自动解析任何WebJars资产的版本。

     

为了启用此功能,我们将添加webjars-locator库   作为应用程序的依赖项:

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>webjars-locator</artifactId>
    <version>0.30</version>
</dependency>
     

在这种情况下,我们可以引用WebJars资产,而无需使用   版; (...)

答案 4 :(得分:1)

如果您使用servlet 3.x,只需添加:

1-使用java config:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

            registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/").resourceChain(false);

       registry.setOrder(1);
    }


}

2-或xml配置:

<mvc:resources mapping="/webjars/**" location="/webjars/"> 
  <mvc:resource-chain resource-cache="false" /> 
</mvc:resources>

答案 5 :(得分:0)

检查了jquery的webjar之后,我通过添加“ 在POM.XML文件中使用的JQUERY库的版本”来完成这项工作。

<script src = "/webjars/jquery/3.1.0/jquery.min.js"></script>

(在我的情况下,我使用3.1.0版本,仅使用您正在使用的版本)。

答案 6 :(得分:0)

确保在添加依赖项时是否更新了 bootstrap 或 jquery 的版本,您应该使用正确版本的 bootstrap 和 jquery 更新 jsp 或 html 中的 URL。