Стили Bootstrap 3 не загружаются при загрузке Spring и WebJars - PullRequest
0 голосов
/ 17 июня 2019

Я добавил следующие зависимости в мой загрузочный проект Spring (с использованием версии 2.1.15):

 <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>bootstrap</artifactId>
    <version>3.3.7-1</version>
</dependency>
<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.2.1</version>
</dependency>

На своей странице Thymeleaf я включил следующие CSS-файлы и сценарии:

<link rel="stylesheet" th:href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}">

<script th:src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}" type="text/javascript"></script>
<script th:src="@{/webjars/jquery/3.2.1/jquery.min.js}" type="text/javascript"></script>

Чтобы загрузить шаблон, я определил следующее отображение контроллера:

@RequestMapping(name = "/")
public String loadMainWeb() {
    return "index";
}

Однако, когда я запускаю приложение, стили Bootstrap не загружаются. Я проверил это, добавив классы btn и btn-primary к кнопке. Почему эти стили не загружаются?

Полный проект можно найти на GitHub .

1 Ответ

1 голос
/ 19 июня 2019

Проблема заключается в отображении вашего контроллера.В настоящее время вы используете следующее отображение:

@RequestMapping(name = "/")
public String loadMainWeb() {
    return "index";
}

Однако вы использовали свойство name вместо свойства path в аннотации @RequestMapping.Оставляя свойство path, вы фактически указываете Spring, что хотите применить это сопоставление контроллера для всех конечных точек.

Это означает, что при запуске приложения вы фактически загружаете страницу index.htmlкогда вы пытаетесь загрузить файлы WebJars.

Чтобы решить эту проблему, вы должны использовать path вместо name:

@RequestMapping(path = "/") // Use 'path'
public String loadMainWeb() {
    return "index";
}
...