• Springboot thymeleaf


    参考文档

    https://www.cnblogs.com/msi-chen/p/10974009.html#_label1_0

    一、准备工作

    1、导包  或 创建项目时勾选

    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf-spring5</artifactId>
    </dependency>
    

    2、创建配置类

    目的:访问静态资源  新建config文件夹

    package com.wt.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
    
    @Configuration
    public class WebStaticConfig extends WebMvcConfigurationSupport {
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            super.addResourceHandlers(registry);
            // 访问 http://localhost:8085/static/jquery-3.3.1.js 即访问 classpath: /static/jquery-3.3.1.js
            registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        }
    }

    3、将静态资源(bootstrap)放到static文件夹下

    4、HTML文件引入约束

    xmlns:th="http://www.thymeleaf.org"
    <!DOCTYPE html>
    <html lang="en"  xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    </body>
    </html>

    二、常用语法

    1、导入CSS和JS

    <link rel="stylesheet" th:href="@{/static/bootstrap/css/bootstrap.min.css}" >
    <script th:src="@{static/jquery-3.3.1.js}"></script>
    <script th:src="@{/static/bootstrap/js/bootstrap.min.js}"></script>

    2、组件复用(fragment)

    a、组件

     1     <nav class="navbar navbar-inverse" th:fragment="my-top">
     2         <div class="container-fluid">
     3             <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
     4                 <ul class="nav navbar-nav">
     5                     <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
     6                     <li><a href="#">Link</a></li>
     7                 </ul>
     8                 <ul class="nav navbar-nav navbar-right">
     9                     <li><a href="#">Link</a></li>
    10                     <li class="dropdown">
    11                         <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
    12                         <ul class="dropdown-menu">
    13                             <li><a href="#">Action</a></li>
    14                         </ul>
    15                     </li>
    16                 </ul>
    17             </div><!-- /.navbar-collapse -->
    18         </div><!-- /.container-fluid -->
    19     </nav>
    nav

     b、复用

        <!-- 组件相对路径 templates -->
        <nav th:insert="~{base/base::my-top}"></nav>
    <nav th:replace="~{base/base::my-nav}"></nav>

    注意:使用replace,效果更好

    案例

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head th:fragment="my-head">
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" th:href="@{/static/bootstrap/css/bootstrap.min.css}" >
        <script th:src="@{static/jquery-3.3.1.js}"></script>
        <script th:src="@{/static/bootstrap/js/bootstrap.min.js}"></script>
    </head>
    <body>
    
        <nav class="navbar navbar-inverse" th:fragment="my-nav">
            <div class="container-fluid">
                <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header">
                    <a class="navbar-brand" href="#">Brand</a>
                </div>
    
                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                    <ul class="nav navbar-nav">
                        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
                        <li><a href="#">Link</a></li>
                    </ul>
    
                    <ul class="nav navbar-nav navbar-right">
                        <li><a href="#">Link</a></li>
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                            <ul class="dropdown-menu">
                                <li><a href="#">Action</a></li>
                                <li><a href="#">Another action</a></li>
                            </ul>
                        </li>
                    </ul>
                </div><!-- /.navbar-collapse -->
            </div><!-- /.container-fluid -->
        </nav>
    
        <div class="container">
    
        </div>
    
    </body>
    </html>
    base.html
    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head th:replace="~{base/base::my-head}">
    
    </head>
    <body>
        <nav th:replace="~{base/base::my-nav}"></nav>
    </body>
    </html>
    list.html

     3、循环 each

    <tr th:each="depatment:${departmentList}">
        <td th:text="${depatmentStat.index + 1}"></td>
        <td th:text="${depatment.name}"></td>
    </tr>

    注意:

    a、departmentList 是后端传递的参数

    b、xxxStat.index 从0开始的序号,还有其它属性

     4、页面跳转 (a标签 href属性)

    a、类restful格式

    <a class="btn btn-primary" th:href="@{/edit/}+${depatment.id}">编辑</a>

    链接:localhost:8085/edit/1

    b、普通格式

    <a class="btn btn-primary" th:href="@{/edit(id=${depatment.id})}">编辑</a>

    链接:localhost:8085/edit?id=1

    案例:用到3和4的内容

    后端

        @GetMapping("/list")
        public String list(Model model){
            List<Department> departmentList = departmentMapper.selectAllDepartment();
            System.out.println(departmentList);
            model.addAttribute("departmentList", departmentList);
            return "department/show";
        }

    前端

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head th:replace="~{base/base::my-head}">
    
    </head>
    <body>
        <nav th:replace="~{base/base::my-nav}"></nav>
        <div class="container">
            <div class="row col-md-8 col-md-offset-2" >
                <div class="panel panel-primary">
                    <div class="panel-heading">
                        <h3 class="panel-title">部门列表
                            <div class="text-right">
                                <a class="btn btn-default btn-" th:href="@{/depart/insert}">添加</a>
                            </div>
                        </h3>
                    </div>
                    <div class="panel-body">
                        <table class="table table-hover">
                            <thead>
                            <tr>
                                <th>序号</th>
                                <th>部门名称</th>
                                <th>操作</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr th:each="depatment:${departmentList}">
                                <td th:text="${depatmentStat.index + 1}"></td>
                                <td th:text="${depatment.name}"></td>
                                <td>
                                    <a class="btn btn-primary" th:href="@{/edit/}+${depatment.id}">编辑</a>
                                    <a class="btn btn-primary" th:href="@{/edit(id=${depatment.id})}">编辑</a>
                                    <a class="btn btn-danger">删除</a>
                                </td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    View Code

     5、三元运算

    后端

        @GetMapping("/test")
        public String test(@RequestParam("id") int id, Model model){
            model.addAttribute("id", id);
            return "department/test";
        }

    前端

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <h1>你好,世界</h1>
    <div th:text="${id}==0?'女':'男'"></div>
    </body>
    </html>
  • 相关阅读:
    Educational Codeforces Round 89 (Rated for Div. 2) B. Shuffle(数学/双指针)
    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords(贪心/数学)
    Codeforces Round #648 (Div. 2) E. Maximum Subsequence Value(鸽巢原理)
    Codeforces Round #648 (Div. 2) D. Solve The Maze
    Codeforces Round #648 (Div. 2) C. Rotation Matching
    Codeforces Round #648 (Div. 2) B. Trouble Sort
    Codeforces Round #648 (Div. 2) A. Matrix Game
    一些常见的重置密码漏洞分析整理
    有无轻量级的可以显示md大纲的编辑器?
    Python3+ssl实现加密通信
  • 原文地址:https://www.cnblogs.com/wt7018/p/13347360.html
Copyright © 2020-2023  润新知