Bootstrap 3 种样式未通过 Spring 引导和 WebJars 加载

Bootstrap 3 styles not loading with Spring boot and WebJars

我将以下依赖项添加到我的 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 样式没有加载。我通过将 btnbtn-primary 类 添加到按钮来对此进行测试。为什么这些样式没有加载?

完整的项目可以在 GitHub 上找到。

问题出在您的控制器映射上。您目前正在使用以下映射:

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

但是,您在 @RequestMapping 注释中使用了 name 属性 而不是 path 属性。通过离开 path 属性,您实际上告诉 Spring 您想要为所有端点应用此控制器映射。

这意味着当您 运行 应用程序时,您实际上在尝试加载 WebJars 文件时加载 index.html 页面。

要解决这个问题,您应该使用 path 而不是 name:

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