Spring Boot + Thymeleaf + webjars Bootstrap 4

Posted

技术标签:

【中文标题】Spring Boot + Thymeleaf + webjars Bootstrap 4【英文标题】:Spring boot + Thymeleaf + webjars Bootstrap 4 【发布时间】:2018-08-15 06:40:09 【问题描述】:

我正在尝试使用 Thymeleaf 将引导程序添加到我的 Spring Boot 项目中。

index.html

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

<div th:replace="@'views/' + $content :: $content"></div>

<div lang="en" th:replace="fragments/footer :: footer"> </div>
</body>
</html>

页脚.html

<div xmlns:th="http://www.thymeleaf.org" th:fragment="footer" >
    <script th:src="@/webjars/jquery/3.3.1/jquery.min.js"></script>
    <script  th:src="@/webjars/popper.js/1.12.9-1/umd/popper.min.js"></script>
    <script th:src="@/webjars/bootstrap/4.0.0-1/js/bootstrap.min.js"  ></script>
</div>

header.html

<head xmlns:th="http://www.thymeleaf.org" th:fragment="header" >
    <meta charset="UTF-8">
    <title>Модуль планирования ПД</title>
    <link th:rel="stylesheet"  th:href="@webjars/bootstrap/4.0.0-1/css/bootstrap.min.css "/>
</head>

MvcConfig.java

    @Configuration
public class MvcConfig implements WebMvcConfigurer 

   @Override
   public void addResourceHandlers(ResourceHandlerRegistry registry) 
      registry
              .addResourceHandler("/webjars/**")
              .addResourceLocations("/webjars/")
              .resourceChain(false);
   

样式不适用于页面并引发错误: 在 jquery、bootstrap、popper 中。

我该如何解决这个问题?

谢谢。

【问题讨论】:

【参考方案1】:

为了更容易,我得到了 webjars-locator:

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

在我的页面最后,我放了:

<script th:src="@/webjars/jquery/jquery.min.js"></script>
<script th:src="@/webjars/popper.js/umd/popper.min.js"></script>
<script th:src="@/webjars/bootstrap/js/bootstrap.min.js"></script>

我没有在 Spring boot 中使用任何其他设置。

【讨论】:

我也有这个问题,似乎没有什么对我有用。【参考方案2】:

如果您在 pom.xml 中使用 org.webjars 依赖项,那么您可能应该在 webjars/... 之前添加斜杠 / 并在 header.html 中保留属性 rel="stylesheet"

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

也尝试在没有MvcConfig 配置类的情况下运行它。

【讨论】:

【参考方案3】:

使用 Spring Boot,WebJars 是自动配置的。无需添加任何处理程序或其他配置。当你运行你的应用程序(没有任何配置)时,你可以看到这样的日志:

... Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

因此,删除您的 MvcConfig 课程可能会解决问题。 事实上,我的 Spring Boot 应用程序与您的类似(但没有该配置文件)并且运行良好。当我将您的配置添加到我的应用程序时,WebJars 不再工作了!

【讨论】:

【参考方案4】:

您也可以通过以下方式添加 webjars 依赖项来解决此问题

   <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>4.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>jquery</artifactId>
        <version>3.4.0</version>
    </dependency>
   <!-- rest of needed dependecies -->

然后将它们添加到您的模板标题中

<link rel="stylesheet" th:href="@/webjars/bootstrap/4.3.1/css/bootstrap.min.css"/>
<script th:href="@/webjars/jquery/3.4.0/jquery.min.js "></script>

然后,如果您运行 Spring-Boot 应用程序并查看页面源代码,您将通过在运行时单击链接来访问此文件。

【讨论】:

以上是关于Spring Boot + Thymeleaf + webjars Bootstrap 4的主要内容,如果未能解决你的问题,请参考以下文章

spring boot整合Thymeleaf

Spring Boot2:使用Spring Boot结合Thymeleaf模板引擎使用总结

Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例

Spring Boot 学习笔记--整合Thymeleaf

Spring Boot入门——thymeleaf模板使用

Spring Boot模板引擎Thymeleaf demo