web-dev-qa-db-fra.com

Webjars de démarrage de printemps: impossible de charger la bibliothèque javascript via webjar

J'ai un projet Spring Boot (j'utilise Thymeleaf pour les modèles) où je veux utiliser des bibliothèques jQuery.

Malheureusement, les webjars ne se chargent pas du tout. J'ai essayé de nombreuses configurations mais toutes ont échoué.

Voici l'extrait de code de ma page 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>

Je les ai ajoutés dans le fichier 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>

Mais en appelant la page, j'ai obtenu un 404 sur jquery.min.js et jquery.fileupload.min.js.

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

Vous référencez correctement la bibliothèque jquery. Il vous manque peut-être la configuration du gestionnaire de ressources.

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

Ou si vous utilisez JavaConfig

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

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

}

documentation Webjars

Si cela ne fonctionne pas, veuillez vérifier si vous avez des webjars sur classpath (ouvrez votre JAR d'application dans 7Zip et vérifiez si les ressources des webjars s'y trouvent.)

23
Gondy

Après avoir inspecté le webjar pour jquery, j'ai obtenu ce fonctionnement en ajoutant un sous-chemin "dist".

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

si vous utilisez le servlet 3.x, ajoutez simplement:

1- en utilisant Java config:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    public void addResourceHandlers(ResourceHandlerRegistry registry) {

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

       registry.setOrder(1);
    }


}

Configuration 2- ou xml:

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

Réponse supplémentaire trouvée sur un blog:

Lorsque vous utilisez Spring Framework version 4.2 ou supérieure, il détectera automatiquement la bibliothèque localisateur de webjars sur le chemin de classe et l'utilisera pour résoudre automatiquement la version de tous les actifs WebJars.

Afin d'activer cette fonctionnalité, nous ajouterons la bibliothèque de localisateurs de webjars en tant que dépendance de l'application:

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

Dans ce cas, nous pouvons référencer les actifs WebJars sans utiliser la version; (...)

1
Tomasz Przybylski

Les dépendances webjars doivent être disponibles sur le chemin d'accès aux classes de démarrage de printemps, vous devriez donc essayer de référencer les webjars en utilisant l'attribut src comme ceci:

<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

J'ai fini par faire une installation propre mvn (à partir de l'invite cmd) pour nettoyer la cible et remplir correctement toutes les lib/jars. J'utilise Spring boot avec Intelij.

1
Ajay Menon