Thymeleaf的常用表达式及简单使用实例

2023-11-04

什么是Thymelaf?

  • 它是非常可拓展的。允许自定义名字来定义一组模板属性(或者甚至是标签)
  • 它还带有一些称为标准方言的东西。它们定义了一组功能,这些功能满足大多数情况

标准表达式五种类型

${…}:变量表达式
*{…}:选择表达式
#{…}:消息表达式(i18n)
@{…}:链接表达式(URL)
~{…}:片段表达式

变量表达式:

  • 作为属性:
<span th:text="${book.author.name}">
  • 迭代:
<li th:each="book:${books}">

选择表达式:
选择表达式和变量表达式一样。唯一区别是他们不是在上下文映射上执行,而是在先前选择的对象上执行。如:

<div th:object = "${session.user}">
    <p>Name:<span th:text="*{firstName}"></span></p>
    <p>Surname:<span th:text="*{lastName}"></span></p>
</div>
//等同于
<div>
    <p>Name:<span th:text="${session.user.firstName}"></span></p>
    <p>surName:<span th:text="${session.user.lastName}"></span></p>
</div>

消息表达式:
消息表达式通常称为文本外部化,国际化,允许从外部源(如:.properties)文件中检索特定语言环境的消息。在spring应用程序中,它将自动与spring的MessageSource机制集成。

#{main.title}
#{message.entrycreate(${entryId})}

链接表达式:

  • 引用静态资源文件时
<script th:src="@{/script/jquery-3.1.1.js}"></script>
<link th:href="@{/css/bootstrap.css}">
  • 重写url
<a href="@{/usethymeleaf(name=${name})}"></a>

片段表达式:
片段表达式是使用th:insert th:replace插入片段

<div th:insert="~{commons/head::main}"></div>//commons:上一级文件  head:当前文件名   //main:fragment中定义的名字
//或者
<div th:replace="commons/head::main"></div>

注:insert和replace区别:
th:replace不要自己主标签,保留th:fragment主标签
th:insert保留自己主标签,保留th:fragment主标签

实例

效果图
在这里插入图片描述
step:

  1. 引入提示(前提)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  1. thymeleaf布局
<head>
    <meta charset="UTF-8">
    <title>登录用户</title>
    <head th:replace="common/head::static"/>
</head>
<!DOCTYPE html >
<html xmlns:th="http://www.thymeleaf.org">
<head th:fragment="static">
<link rel="stylesheet" href="/css/bootstrap.css">
<script type="text/javascript" src="/js/jquery.min.js" ></script>
<script type="text/javascript" src="/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/css/toastr.min.css"></script>
<script type="text/javascript" src="/js/plugins/toastr/toastr.min.js"></script>
<script type="text/javascript"></script>
</head>
</html>
  1. 显示数据
<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
          <button type="button" class="btn btn-default btn-success">修改</button>
            <table class="table">
                <thead>
                <tr class="warning">
                    <th>id</th>
                    <th>name</th>
                    <th>password</th>
                    <th>comment</th>
                    <th>index</th>
                    <th>size</th>
                    <th>first</th>
                    <th>last</th>
                    <th>girlOrBoy</th>
                </tr>
                </thead>
                <tbody>
                <tr th:each="myList,adminStat:${adminList}" th:switch="${myList.name}" th:class="${adminStat.even}?'success':'info'">
                    <td th:text="${myList.id}"></td>
                    <td th:text="${myList.name}"></td>
                    <td th:text="${myList.password}"></td>
                    <td th:case="wpzhang">wpzhang likes runnning</td>
                    <td th:case="pzhang">pzhang is a shy girl</td>
                    <td th:case="xlyu">xlyu is outgoing</td>
                    <td th:case="jysu">jysu is a quiet boy</td>
                    <td th:text="${adminStat.index}"></td>
                    <td th:text="${adminStat.size}"></td>
                    <td th:text="${adminStat.first}"></td>
                    <td th:text="${adminStat.last}"></td>
                    <td th:if="${myList.name=='pzhang'}">girl</td>
                    <td th:unless="${myList.name=='pzhang'}">boy</td>
                </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

解释:

adminStat:是状态变量,其属性有:

  • index(从0开始取值)
  • count(从1开始取值)
  • size(对象的属性个数)
  • current(当前迭代变量)
  • even/odd(奇行还是偶行)
  • first(是否是循环第一个),last同理
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Thymeleaf的常用表达式及简单使用实例 的相关文章

随机推荐

  • ZonedDateTime 转为字符串

    Java8新特性ZonedDateTime 这个类有很多好用的方法 但是也有很多坑 它转为字符串时间不对 一般会少几个小时 这个因为地区时间不对 我们只需要转为字符串的时间添加几小时就好 代码如下 public static String
  • c++ vector内存释放踩坑,内存泄漏

    目录 vector删除元素 智能指针 vector移动元素位置 vector条件删除
  • 编译原理之first集,follow集,select集解析

    为了方便自顶向下语法分析 需要求文法对应的first集 follow集 以及select集 本文主要分为两部分 一个是求法解析 还有一个例子详解 第一部分是求法解析 将对first集 follow集 select集分为三种讲解方法 定义介绍
  • pyspark对字段加前缀,拼接字符串

    代码逻辑 在df中 当字段main task id为 0 时 则对字段sub task id加前缀 check 否则取其本身的值 正确代码如下 df2 df withColumn sub task id when col main task
  • SQL窗口函数的使用

    定义 窗口函数 又叫OLAP Online Anallytical Processing 函数 可对数据库数据进行实时分析处理 功能 同时分组和排序 不减少原表的行数 区别于聚合函数 每行数据都生成一个结果 使用场景 排名问题 topN问题
  • USE_STDPERIPH_DRIVER, STM32F10X_HD说明

    如果在STM32工程编译时没有添加USE STDPERIPH DRIVER STM32F10X HD时会出现如下错误 library cortex m3 stm32f10x h 96 error 35 error directive Ple
  • SLAM实战项目(1) — ORB-SLAM2稠密地图重建

    目录 1 整体思路 2 功能实现 3 结果运行 1 TUM数据集下载 2 associate py用于RGB和Depth匹配 3 运行数据集 4 CMakeLists txt文件修改 5 完整PointCloudMapping h和Poin
  • 关于GPT-3和GPT-4,你需要知道都在这里

    友情提示 提示 本文约3500个文字 字数较长 可直接点击序号进入相关目录阅读字数 文章目录 友情提示 前言 一 什么是 GPT 3 GPT 4 和 ChatGPT 二 对未来的担忧 三 什么时候可以用GPT4 四 GPT 4用在什么地方
  • 漏洞扫描工具Goby的安装和使用(新一代网络安全技术)

    简介 Goby使用新一代网络安全技术 通过为目标建立完整的资产数据库 实现快速的安全应急 Goby有哪些优势呢 最丰富的设备规则集 Goby预置了超过10万种规则识别引擎 能针对硬件设备和软件业务系统进行自动化识别和分类 全面的分析出网络中
  • 大一上学期c语言PTA错题总结(自用)(02)

    1 下列程序段的输出结果是 C int main void int a 2 b 1 c 2 if a lt b if b lt 0 c 0 else c printf d n c return 0 A 0 B 1 C 2 D 3 else与
  • 运行维护巡检流程及内容

    运维人员着工装 佩戴工作牌按照程序进入企业 并与企业环保专员联系共同进入基 站 运维人员观察基站站房外部卫生 管路 电气电路是否异常 运维人员进入站房 检查数据采集传输是否正常 各监测设备运行是否正常 历史数 据完整性 检查采样系统是否正常
  • 使用element -ui 遇到的坑

    1 使用el dialog 遮罩层把显示内容遮住了 原因 Dialog 的外层布局的 position 值为 fixed absolute relative 三者之一时 就会出现被蒙板遮住的情况 解决方法 参考链接 https blog c
  • SpringCloudAlibaba实战入门之Dubbo(基于Nacos注册中心)(七)

    一 Dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能 轻量级的 Java RPC 框架 致力于提供高性能和透明化的 RPC 远程服务调用方案 以及 SOA 服务治理方案 官网 http dubbo apache org 服务提供者在
  • C++11数组了解

    原文链接 C 11数组 array 的使用 码到城攻使用 std array 能够让代码变得更加 现代化 而且封装了一些操作函 数 比如获取数组大小以及检查是否非空https www codecomeon com posts 221 数组介
  • Hadoop NameNode和DataNode只能启动一个问题

    DataNode和NameNode进程不能共存 启动NameNode可以正常启动 但是启动DataNode时发现 NameNode进程不存在了 导致两个无法共存 问题原因 NameNode在format初始化后会生成claserId 集群i
  • Java Web项目部署到Linux后的中文乱码问题

    问题描述 项目通过Maven打成war包传输到Linux上 SQL导出数据和结构后在Linux上的Mysql执行 数据都能正常显示 项目也是正常的访问到了index html 一切显得毫无问题 开始测试项目各个功能是否有异常 当我检查到我的
  • python练习.求s=a+aa+aaa+aaaa+aa...a的值

    题目 求s a aa aaa aaaa aa a的值 其中a是一个数字 例如2 22 222 2222 22222 此时共有5个数相加 几个数相加由键盘控制 from functools import reduce n 0 s n int
  • SegFormer 代码详解+数据流分析

    目录 代码详解 数据流分析 数据流及尺寸变化 输入为512x512x3的图片 使用b0主干网络 Encoder mit backbone Transformer Block 解码头 Head 代码详解 import torch 导入PyTo
  • java内存模型的角度分析volatile关键字

    多任务处理 多任务处理的背景 计算机的运算能力增强 计算机的运算速度与它的存储和通信子系统的速度差距太大 大量的时间都花费在磁盘I O 网络通信或者数据库访问中上 我们不希望处理器在大部分时间里都处于等待其他资源的空闲状态 计算机多任务处理
  • Thymeleaf的常用表达式及简单使用实例

    什么是Thymelaf 它是非常可拓展的 允许自定义名字来定义一组模板属性 或者甚至是标签 它还带有一些称为标准方言的东西 它们定义了一组功能 这些功能满足大多数情况 标准表达式五种类型 变量表达式 选择表达式 消息表达式 i18n 链接表