zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/wt7018/p/13347360.html
Copyright © 2011-2022 走看看