springboot thymeleaf使用

news2025/1/21 1:00:02

导入依赖

<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>

yml配置

  thymeleaf:
    mode: HTML   #thymeleaf 的模板模型
    cache: false  #不适用缓存
    encoding: UTF-8  #编码
    prefix: classpath:/templates/  #前缀
    suffix: .html         #后面

 html

@Controller
public class HelloController {

    @Autowired
    private UserDao userDao;

    @RequestMapping("/test")
    public String hello(Map map){
        System.out.println("进来了");
        List<User> users = userDao.getAll();
        map.put("users",users);
        System.out.println(users);
        return "hello";
    }
    @RequestMapping("/delete")
    public String delete(Integer id){
        System.out.println(id);
        Integer a=userDao.delete(id);

         return "forward:/test";
    }

    @RequestMapping("/toUpdate")
    public String getOne(Integer id,Map map){
        System.out.println(id);
        User user=userDao.getOne(id);
        map.put("user",user);
        return "one";
    }

    @RequestMapping("/toAdd")
    public String toAdd(){

        return "add";
    }
}

必须加入 <html lang="en" 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>
<h1>Hello</h1>

        <table cellspacing="0" border="1">

            <tr>

                <th>ID</th>
                <th>NAME</th>
                <th>AGE</th>
                <th>GENDER</th>
                <th>BIRTHDAY</th>
                <th>OPERA</th>

            </tr>

            <tr th:each="user:${users}">

                <td th:text="${user.id}"></td>
                <td th:text="${user.name}"></td>
                <td th:text="${user.age}"></td>
                <td th:text="${user.gender}"></td>
                <td th:text="${#dates.format(user.birthday,'yyyy-MM-dd')}"></td>
                <td><a th:href="@{/delete(id=${user.id})}">删除</a><a th:href="@{/toUpdate(id=${user.id})}">编辑</a></td>

            </tr>

        </table>

<a th:href="@{/toAdd}">去添加</a>
</body>
</html>

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

<form th:action="@{/add}" method="post" >

    <input name="id" placeholder="请输入id"><br/>
    <input name="name" placeholder="请输入姓名"><br/>
    <input name="age" placeholder="请输入年龄"><br/>
    <input name="gender" placeholder="请输入性别" ><br/>

    <input type="submit" value="添加">

</form>

</body>
</html>

 

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

  <!--  <form th:action="@{/update}" method="post" >

        <input name="id" th:value="${user.id}" value="aa"><br/>
        <input name="name" th:value="${user.name}"><br/>
        <input name="age" th:value="${user.age}"><br/>
        <input name="gender" th:value="${user.gender}"><br/>

        <input type="submit" value="修改">

    </form>-->

  <form th:action="@{/update}" th:object="${user}" method="post" >

      <input name="id" th:value="*{id}" value="aa"><br/>
      <input name="name" th:value="*{name}"><br/>
      <input name="age" th:value="*{age}"><br/>
      <input name="gender" th:value="*{gender}"><br/>

      <input type="submit" value="修改">

  </form>

</body>
</html>

 Thymeleaf模板

4.1 th 属性
4.1.1 常用 th 属性解读
html 有的属性, Thymeleaf 基本都有,而常用的属性大概有七八个。其中 th 属性执行的优先级从 1~8 ,数字越低优先
级越高。
一、 th:text :设置当前元素的文本内容,相同功能的还有 th:utext ,两者的区别在于前者不会转义 html 标签,后者
会。优先级不高: order=7
二、 th:value :设置当前元素的 value 值,类似修改指定属性的还有 th:src th:href 。优先级不高: order=6
三、 th:each :遍历循环元素,和 th:text th:value 一起使用。注意该属性修饰的标签位置,详细往后看。优先级很
高: order=2
四、 th:if :条件判断,类似的还有 th:unless th:switch th:case 。优先级较高: order=3
五、 th:insert :代码块引入,类似的还有 th:replace th:include ,三者的区别较大,若使用不恰当会破坏 html
构,常用于公共代码块提取的场景。优先级最高: order=1
六、 th:fragment :定义代码块,方便被 th:insert 引用。优先级最低: order=8
七、 th:object :声明变量,一般和 *{} 一起配合使用,达到偷懒的效果。优先级一般: order=4
八、 th:attr :修改任意属性,实际开发中用的较少,因为有丰富的其他 th 属性帮忙,类似的还有 th:attrappend
th:attrprepend 。优先级一般: order=5
4.1.2 常用 th 属性使用
使用 Thymeleaf 属性需要注意点以下五点:
一、若要使用 Thymeleaf 语法,首先要声明名称空间:
xmlns:th="http://www.thymeleaf.org"
二、设置文本内容 th:text ,设置 input 的值 th:value ,循环输出 th:each ,条件判断 th:if ,插入代码块 th:insert ,定
义代码块 th:fragment ,声明变量 th:object
三、 th:each 的用法需要格外注意,打个比方:如果你要循环一个 div 中的 p 标签,则 th:each 属性必须放在 p 标签上。
若你将 th:each 属性放在 div 上,则循环的是将整个 div
四、变量表达式中提供了很多的内置方法,该内置方法是用 # 开头,请不要与 #{} 消息表达式弄混。
五、 th:insert th:replace th:include 三种插入代码块的效果相似,但区别很大。
pom.xml 引入 Thymeleaf 的依赖,并确定其版本

链接表达式好处
不管是静态资源的引用, form 表单的请求,凡是链接都可以用 @{...} 。这样可以动态获取项目路径,即便项目名
变了,依然可以正常访问
链接表达式结构
无参: @{/xxx}
有参: @{/xxx(k1=v1,k2=v2)} 对应 url 结构: xxx?k1=v1&k2=v2
引入本地资源: @{/ 项目本地的资源路径 }
引入外部资源: @{/webjars/ 资源在 jar 包中的路径 }
列举:第三部分的实战引用会详细使用该表达式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot集成swagger并更换主题

前言 swagger对于web一个开发人员&#xff0c;可以说是非常熟悉的了&#xff0c;之前都是用的公司搭好的框架拿来就用&#xff0c;自己也没有研究过&#xff0c;最近想搞一个自己拿来练手的基础框架&#xff0c;因此来记录一下springboot集成swagger的过程和注意事项。 swagg…

云南白药正在度过“中年危机”

​文丨熔财经 作者|kinki 今年&#xff0c;正是云南白药创制的120周年&#xff0c;虽然是一个百年老字号品牌&#xff0c;但在过去的数年间&#xff0c;云南白药在新品研制、跨界发展乃至品牌推广上都做了不少新尝试。今年&#xff0c;云南白药更提出了“141”战略&#xff0…

备战 2023 春招,P7大咖位手打 26 大后端面试专题神技,1500+题解析助力offer

年过后&#xff0c;不少人已经蓄势待发&#xff0c;信心满满地准备投递简历&#xff0c;到处面试&#xff0c;在不同的 Offer 之中择优而栖。 与此同时&#xff0c;也有人会悔恨自己这半年进步不大&#xff0c;每天噼里啪啦敲代码&#xff0c;但面对那些不能再熟悉的 Java 面试…

分布式解决方案 Percolator--详解

Percolator简介 Google在2012年将Percolator的架构设计作为论文发表&#xff0c;其目的是构建于BigTalbe的基础上&#xff0c;主要用于网页搜索索引等服务。由于BigTable只支持单行级别的事务&#xff0c;不支持多行事务等更复杂的事务&#xff0c;因此Percolator的诞生就是为了…

数据增强:Simple Questions Generate Named Entity Recognition Datasets

数据增强的方式一般是无标注数据集的情形的一种解决方式&#xff0c;今天的讲座报告中对这问题做了梳理。11.27学术报告文章&#xff0c;应该是韩旭的报告。 文章目录问题背景一、论文核心二、文章内容三、experiments总结问题背景 还是在于方法的创新&#xff0c;虽然是数据增…

Centos7下安装Oracle11g

1. 下载安装包 由于Oracle官网上无法下载Oracle数据库之前的版本&#xff0c;可以在 Oracle Software Delivery Cloud 里搜索oracle database 11g 或者百度网盘下载链接&#xff1a;https://pan.baidu.com/s/1r57xI5fSVba_Q3biCj06yg 提取码&#xff1a;xk30 2. 创建运行ora…

【BSC】使用Python玩转PancakeSwap(入门篇)

需求 最近我们需要在BSC上实现代币的自动化兑换&#xff0c;比如自动把BNB兑换成USDT&#xff0c;自动把USDT兑换成CAKE等其它代币&#xff0c;同时也要监视价格&#xff0c;在价格合适的时候再兑换代币。而PancakeSwap正是BSC上最大的去中心化平台&#xff0c;我们已经学会了…

潜匿的怪物,你的供应链真的安全吗?

网络钓鱼、DNS欺骗      勒索软件、MITM攻击      在这个网络环境      风声鹤唳的时代      这些网络攻击类型      你一定不会感到陌生      无孔不入,这个词用来形容网络攻击毫不为过。世上没有绝对锋利的矛,同样也没有坚不可摧的盾,即使您养成了安…

如何编写列名中带有空格的SQL查询

在这篇文章中&#xff0c;我们将学习如何写出列名中带有空格的SQL查询。空格在数据库对象的名称和表的列名的命名规则中受到限制。如果你想在对象名或列名中加入空格&#xff0c;查询和应用代码必须以不同的方式编写。在编写动态SQL查询时&#xff0c;你必须小心和精确。本文解…

【JavaWeb】Servlet系列 --- Tomcat安装及配置和常见的问题(2022最新详解、图文教程)

Tomcat的配置安装1. 关于WEB服务器软件2. 配置Tomcat的服务器第一步&#xff1a;配置Java的运行环境第二步&#xff1a;Tomcat的安装第三步&#xff1a;启动Tomcat3. 问题一&#xff1a;解决Tomcat服务器在DOS命令窗口中的乱码问题&#xff08;控制台乱码&#xff09;4. 测试To…

linux 用户不在sudoers文件中,此事将被报告

出现如下提示 gaokaoli 出现不在 sudoers 文件中。此事将被报告 一般是该用户 权限不够 既然知道权限不够可以添加到root用户组&#xff0c;获取权限即可 通过命令行添加到权限&#xff0c;发现还是不行 sudo usermod -g root gaokaoli 那就直接在配置文件中修改 通过执行…

word设置页码从非第一页开始

设置过程 参考&#xff1a;https://zhuanlan.zhihu.com/p/84998841 显示出分隔符和分页符 方法一&#xff1a; 在文档中直接按【CtrlShift8】组合键&#xff0c;即可显示出分节符。. 方法二&#xff1a; 点击【开始】-【段落】-【显示/隐藏编辑标记】按钮&#xff0c;也可显…

如何安装Jmeter监控服务器资源插件(JMeterPlugins + ServerAgent 方法一)?

一、下载插件 ServerAgent-2.2.3.zip 下载 JMeterPlugins-Extras-1.4.0.zip下载 JMeterPlugins-Standard-1.4.0.zip下载 &#xff08;或者可以到网站下载插件&#xff1a;JMeterPlugins-Standard和JMeterPlugins-Extras 下载地址&#xff1a;https://jmeter-plugins.org/down…

计算机图形学(三) -- 3D 变换

文章目录3D 变换缩放(Scale)平移(Translation)旋转(Rotation)3D 旋转(3D Rotation)什么是欧拉角罗德里格斯旋转公式(Rodrigues Rotation Formula)Viewing transformation什么是 View / Camera Transformation相机标准位置(约定俗成)怎样将一个相机从一个任意的摆放&#xff0c;…

clickhouse单节点以及集群的安装

安装 因为clickHouse很消耗cpu资源&#xff0c;所以需要修改&#xff1a;用户可打开的文件数量和最大进程数&#xff1a; vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072//第一列代表用户用户组&#x…

[LeetCode周赛复盘] 第 92 场双周赛20221015

[LeetCode周赛复盘] 第 92 场双周赛20221015 一、本周周赛总结二、 [Easy] 6249. 分割圆的最少切割次数1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6277. 行和列中一和零的差值1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6250. 商店的最少代价1. 题目描述2. 思路分析…

org.springframework.test.util.ReflectionTestUtils.invokeMethod方法的使用

序言 为什么要用spring框架的ReflectionTestUtils工具类的invokeMethod方法&#xff1f; 当我们想要调用一个实例对象的私有方法时&#xff0c;我们可以利用反射机制去调用该私有方法。 Demo 含有私有方法的类&#xff0c; public final class DemoClass {private static …

Spring - BeanFactoryPostProcessor 扩展接口

文章目录Preorg.springframework.beans.factory.config.BeanFactoryPostProcessor源码探究1 是否实现BeanDefinitionRegistryPostProcessor 接口&#xff0c;分别写入集合2 处理实现了的PriorityOrdered和 BeanDefinitionRegistryPostProcessors 的 bean3. 处理实现了的Ordered…

Linux基础

一、Linux发展历程 1.1、Linux前身-Unix 1968年Multics 项目 MIT|、Bell 实验室、美国通用电气有限公司走到了一起&#xff0c;致力于开发Multics项目。到后期由于开发进度不是很好&#xff0c;MIT 和Bell实验室相继离开这个项目的开发&#xff0c;最终导致项目搁浅。 1970年 …

接口测试用例设计方法方式和流程一文到底

目录 1、通用信息校验 1、URL校验 2、请求方法校验 3、请求头 4、接口鉴权 2、接口参数校验 1、参数的必填项校验 2、参数的选填项校验 3、参数长度校验 4、参数数据类型校验 5、参数的有效性校验 6、参数的唯一性校验 7、参数关联项校验 3、其他补充项 1、幂等…