SpringBoot使用thymeleaf实现布局方案二,方案在手说走就走 - 第425篇

在前面的小节中,介绍了th:include/th:replace/th:insert的方式进行页面的布局,在这里还有一种非常不错的方案,也就是layout,这一节就来看下如何进行使用。

一、layout布局

       这里是接着上一节的基本框架,往下讲解,对于基本的引入不重复赘述。

       看下layout的使用步骤:

(1)引入thymeleaf-layout-dialect依赖

(2)添加LayoutDialect

(3)允许bean被重新定义

(4)定义布局文件layout.html

(5)编写页面文件

1.1 引入thymeleaf-layout-dialect依赖

       在pom.xml文件依赖:

<dependency>    <groupId>nz.net.ultraq.thymeleaf</groupId>    <artifactId>thymeleaf-layout-dialect</artifactId>    <version>2.3.0</version></dependency>

1.2添加LayoutDialect

       创建一个配置文件ThymeleafConfig,主要是注入LayoutDialect:

package com.kfit.config;import nz.net.ultraq.thymeleaf.LayoutDialect;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.thymeleaf.TemplateEngine;/** * Thymeleaf配置类 * * @author 悟纤「公众号SpringBoot」 * @date 2022-04-23 * @slogan 大道至简 悟在天成 */@Configurationpublic class ThymeleafConfig {    @Bean    public LayoutDialect layoutDialect(){        return new LayoutDialect();    }    @Bean    public TemplateEngine templateEngine(){        TemplateEngine templateEngine = new TemplateEngine();        templateEngine.addDialect(layoutDialect());        return templateEngine;    }}

1.3允许bean被重新定义

       如果没有添加此配置的话,可能会报如下错误:

       只需要在application.properties添加配置:

spring.main.allow-bean-definition-overriding=true



1.4定义布局文件layout.html

       这个也是layout布局方式的核心文件了,看下具体怎么编写:

<!DOCTYPE html><html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"><head>    <title>Layout page</title></head><body>    <!-- 导航部分 -->    <header style="text-align: center;height: 40px;background: cadetblue;"> 首页 | 产品 | 关于我们 </header>    <section layout:fragment="content">        <p>Page content goes here</p>    </section>    <!-- 顶部部分 -->    <footer style="text-align: center;;height: 40px;background: #2e2e41;color:white;">@版权所有 公众号SpringBoot</footer></body></html>

说明:

(1)使用xmlns:layout引入layout

(2)使用layout:fragment定义页面的代码片段渲染位置

(3)对于header和footer也可以使用th:replace进行引入

1.5编写页面文件

       最后来看下页面:

<!DOCTYPE html><html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"      layout:decorate="~{common/layout.html}"><head>    <title>Content page</title></head><body>    <section layout:fragment="content">        <div style="text-align: center;height:100px;">内容部分layout</div>    </section></body></html>

说明:

(1)使用xmlns:layout引入layout

(2)使用layout:decorate指定要装饰的布局文件

(3)layout:fragment="content"这里和layout.html的指定的名称一样即可。

       运行看小效果:

       看下生成的代码:

进入 index.html 时,通过 layout:decorator 标签指定的模板,然后用 Content.html 中的数据填充模板,最终得到页面。

总结

       通过这两个小节可以收获:

(1)布局方案:th:replace/th:insert/th:include

(2)布局方案layout

       对于这两种方案在实际的项目是可以进行组合使用的,技术就这么多,具体怎么使用,那就大家自己发挥了。







购买完整视频,请前往:http://www.mark-to-win.com/TeacherV2.html?id=287