web-dev-qa-db-ja.com

スプリングブートwebjar:webjarを介してjavascriptライブラリをロードできません

いくつかのjQueryライブラリを使用したいのですが、Spring Boot(テンプレートにはThymeleafを使用しています)プロジェクトがあります。

残念ながら、webjarはまったくロードされません。多くの設定を試しましたが、すべて失敗しました。

これが私の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)
9
Master Mind

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のドキュメント

これが機能しない場合は、クラスパスにwebjarがあるかどうかを確認してください(7ZipでアプリケーションJARを開き、webjarリソースがその中にあるかどうかを確認してください)。

23
Gondy

Jqueryのwebjarを検査した後、「dist」サブパスを追加することでこれを機能させました。

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

サーブレット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>
1
Jacob

1つのブログで見つかった追加の回答:

Spring Frameworkバージョン4.2以降を使用すると、クラスパス上のwebjars-locatorライブラリが自動的に検出され、それを使用してWebJarsアセットのバージョンが自動的に解決されます。

この機能を有効にするために、アプリケーションの依存関係としてwebjars-locatorライブラリを追加します。

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

この場合、バージョンを使用せずにWebJarsアセットを参照できます。 (...)

1

Webjarsの依存関係はスプリングブートクラスパスで利用できるはずなので、次のようにsrc属性を使用してwebjarsを参照してみてください。

<script src="webjars/jquery/2.1.4/jquery.min.js" type="text/javascript"></script>
<script src="webjars/jquery-file-upload/9.10.1/jquery.fileupload.min.js"></script>
<link href="webjars/bootstrap/3.3.5/css/bootstrap.min.css"
  rel="stylesheet" media="screen" />
<link href="webjars/jquery-file-upload/9.10.1/jquery.fileupload.css"
  rel="stylesheet" media="screen" />
1
marminto

(cmdプロンプトから)mvn clean installを実行して、ターゲットをクリーンアップし、すべてのlib/jarを正しく設定しました。 IntelijでSpringブートを使用しています。

1
Ajay Menon