首页 >  编程教程 >  java教程 >  正文

springBoot之Thymeleaf常见语法

1208

Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面 。
Thymeleaf 是新一代 Java 模板引擎,支持 HTML 原型,以直接被浏览器打开,此时浏览器会忽略未定义的 Thymeleaf 标签属性,展示 thymeleaf 模板的静态页面效果。当在应用程序中会动态地替换掉页面设置的标签属性。

一、访问map中的数据

@RequestMapping("/index")
     public String hello(Model map){
         Map<String, Object> student= new HashMap<>();
         student.put("name", "潘某人seo");
         map.addAttribute("student",student);      
         return "index";
     }
1
2
3
4
5
6
7
<span th:text="${student.name}"></span>   
字符串拼接:<h2 th:text="'姓名:'+${student.name}"></h2>
三元表达式:<input th:value="${age gt 30 ? '中年':'年轻'}"/>
gt:great than(大于)
ge:great equal(大于等于)
eq:equal(等于)
lt:less than(小于)
le:less equal(小于等于)
ne:not equal(不等于)
1
2
3
4
5
6
7
8
9

记住:th:text就是把数据渲染到两个标签中间 ,其中th是thymeleaf简写。

二、访问pojo中的属性

//pojo
Book book = new Book("辟邪剑谱",199.99f,"localhost");
map.addAttribute("book",book);
1
2
3
<img th:src="${book.bookUrl}"/>
<span th:text="${book.bookName}"/>
1
2

记住:如果你想让标签属性值动态化,请在标签属性名前面加上th:

三、循环遍历list集合

List<Book> books = new ArrayList<Book>();
for (int i = 0; i < 10; i++) {
    Book b = new Book("book"+i, 100f, i);
    books.add(b);
}
map.addAttribute("books",books);
1
2
3
4
5
6
<table border="1px" cellspacing="0px" cellspadding="0px" width="100%">
    <tr>
        <td>编号</td><td>书名</td><td>书价格</td><td>图片地址</td>
    </tr>
    <tr th:each="book:${books}">
        <td>编号</td>
        <td th:text="${book.bookName}">书名</td>
        <td th:text="${book.bookPrice}">书价格</td>
         <td th:text="${book.bookUrl}">图片地址</td>
    </tr>
</table>
1
2
3
4
5
6
7
8
9
10
11

取循环下标:

<tr  th:each="user,userStat : ${list}">  
    <th th:text="${userStat.index}">状态变量:index</th> 
    <th th:text="${userStat.count}">状态变量:count</th> 
    <th th:text="${userStat.size}">状态变量:size</th> 
    <th th:text="${userStat.current.userName}">状态变量:current</th> 
    <th th:text="${userStat.even}">状态变量:even****</th> 
     <th th:text="${userStat.odd}">状态变量:odd</th> 
    <th th:text="${userStat.first}">状态变量:first</th> 
    <th th:text="${userStat.last}">状态变量:last</th> 
</tr>
1
2
3
4
5
6
7
8
9
10

说明:

  • index:列表状态的序号,从0开始;
  • count:列表状态的序号,从1开始;
  • size:列表状态,列表数据条数;
  • current:列表状态,当前数据对象
  • even:列表状态,是否为奇数,boolean类型
  • odd:列表状态,是否为偶数,boolean类型
  • first:列表状态,是否为第一条,boolean类型
  • last:列表状态,是否为最后一条,boolean类型

四、if逻辑判断

<h1>
    <b th:text="${name}"></b><span th:if="${age gt 30}">中年</span>
    <span th:unless="${age gt 30}">年轻</span>
</h1>
1
2
3
4
5

记住:th:if表示满足条件显示标签,th:unless表示不满足条件显示标签

五、日期处理

<span th:text="${#dates.format(post.postCreate,'yyyy-MM-dd')}">2017年11月8日</span>
1

thymeleaf

六、定义片段和引用片段

定义片段:新建footer.html,并在footer.html中声明片段

<footer th:fragment="copy">  
   <script type="text/javascript" th:src="@{/plugins/jquery/jquery-3.0.2.js}"></script>  
</footer>
1
2
3

引用片段:在index.html中引用footer片段:

<!--下面的footer是页面的名字,不是标签的名字-->
  <div th:insert="footer::copy"></div>  
  <div th:replace="footer::copy"></div>  
  <div th:include="footer::copy"></div>  
结果为:  
<div>  
    <footer>  
       <script type="text/javascript" th:src="@{/plugins/jquery/jquery-3.0.2.js}"></script>  
    </footer>    
</div>    
<footer>  
  <script type="text/javascript" th:src="@{/plugins/jquery/jquery-3.0.2.js}"></script>  
</footer>    
<div>  
  <script type="text/javascript" th:src="@{/plugins/jquery/jquery-3.0.2.js}"></script>  
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

说明:

  • th:insert :保留自己的主标签,保留th:fragment的主标签。
  • th:replace :不要自己的主标签,保留th:fragment的主标签。
  • th:include :保留自己的主标签,不要th:fragment的主标签。(官方3.0后不推荐)

七、内联方式

如果不内联我们这么拼接字符串

<span th:text="'名字'+${stu.name}+'性别'+${stu.sex}+'年龄'+${stu.age}"></span>
1

使用内联我们就可以这么玩:

<span th:inline="text">名字[[${stu.name}]]性别[[${stu.sex}]]年龄[[${stu.age}]]</span>
1

一对比,发现第一种拼接起来麻烦,第二种更快捷,所以内联还是有使用场景的
注意:一定要加th:inline=“text”

八、内置对象

<span th:if="${session.name!=null}" th:text="'欢迎:'+${session.name}"></span>
<span th:id="${session.name==null}" th:>请登录</span>
1
2

九、自定义标签属性

<span th:sex="${stu.sex}" th:age="${stu.age}"></span>
1

这样写标签属性是取不到值的,你必须这么写

<main th:attr="sex=${stu.sex},age=${stu.age}"></span>
1
申明:本站内容仅代表个人观点,仅供学习参考;未经授权任何个人或组织单位不得复制、转载、摘编以及其它形式的应用! 本站文章可能使用到互联网上的资料,若对您造成困扰,请联系 kk19@foxmail.com除理 本文地址:https://www.chateach.com/it/java/905thymeleaf
相关文章
  • springboot网站搭建部署详细流程

    springboot

    linux环境如何搭建java框架springboot,为大家演示一种快速简单的搭建springboot的方法。由于springboot是java的众多框架之一,因此需要部署好java的运行环境,即服务器安装好jdk18以及tomcat3,注意版本的兼容性。

    1257
    • springboot
  • springboot如何对html进行转义及恢复

    html转义,springboot

    Spring HtmlUtils把HTML编码转义,可将HTML标签互相转义,HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用。

    2035
    • html转义
    • springboot
  • SpringBoot中的异常处理的详细教程

    SpringBoot,异常处理

    SpringBoot中的异常处理的详细教程,处理用户请求出现运行时异常时直接响应给用户的是一个错误界面,对于用户的使用体验不友好。什么是全局异常处理机制,用来解决整个系统中任意一个控制器抛出异常时的统一处理入口,如何使用全局异常处理类 implements HandlerExceptionResolver,之后重写接口中的resolveException方法。

    981
    • SpringBoot
    • 异常处理
  • springboot怎么返回404页面及状态码

    springboot 404页面

    我们的项目通常来讲都是一个比较大的项目,包含了各种各样的服务。如果每个服务都以不同的方式返回异常信息,这样排查的时候就会比较凌乱。如果我们定义一个标准的异常处理体系。并在所有的服务中使用。那样开发起来就可以快速定位。页面也会更加的简单和直观。

    1394
    • springboot 404页面
  • Springboot如何生成cookie,获取cookie信息

    Springboot,cookie

    Springboot如何生成cookie,获取cookie信息,cookie就是一个小体积的键值对,格式:key=value;客户端和服务器端,通常使用http协议来进行数据传输,而http协议是无状态的。也就是客户端向同一个服务器端发送的第一次Request和第二次Request,是没有关联的。需要cookie来保存一些用户信息,每次向相同的域名(domian)和路径(path)发送Request时都会携带cookie。

    945
    • Springboot
    • cookie
  • SpringBoot——Thymeleaf中的条件判断

    Thymeleaf

    SpringBoot——Thymeleaf中的条件判断(th:if、th:unless、th:switch、th:case),th:if、th:unless、th:switch、th:case 这几个属性,其实和JSP里面的那些标签都是类似的,含义就可以理解为Java语言中的if、else、switch-case这些条件判断一样,所以这里就不再详细叙述了,下面就直接给出例子!!!

    1639
    • Thymeleaf
  • SpringBoot--Thymeleaf日期格式处理

    Thymeleaf,日期格式

    Thymeleaf作为众多模板引擎中的一种,我最初也是对它充满了陌生,在SpringBoot如何处理时间格式,SpringBoot--Thymeleaf日期格式处理。

    895
    • Thymeleaf
    • 日期格式
  • SpringBoot如何实现邮箱验证

    SpringBoot,邮箱验证,验证码发送

    在网站及各种应用中不可避免的需要运用到邮件发送服务,如消息提醒,验证码的发送,都需要使用到邮件发送。大体思路:先生成一个六位随机验证码并存起来,调用邮箱接口发送验证码,将用户输入的验证码和之前保存的验证码进行比对。

    1274
    • SpringBoot
    • 邮箱验证
    • 验证码发送
  • Spring Boot 如何解决跨域问题

    SpringBoot跨域

    SpringBoot 如何解决跨域问题方法,CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问的那个资源就会遇到跨域问题。

    751
    • SpringBoot跨域
  • Java获取IP,如何获取到访客的真实公网ip

    Java获取IP

    springboot,java如何获取用户的真实ip地址呢?项目开发中,不管是什么应用不管是什么语言,获取ip地址是非常关键的一环,因为管是操作日志的记录还是业务的需求上都不可或缺的用到访客的ip地址,那么在java中如何获取到IP地址呢?

    843
    • Java获取IP
  • DeepSeek一键部署,不用等待模型下载,创建即可使用。

    DeepSeek部署

    DeepSeek一键部署,不用等待模型下载,创建即可使用。腾讯云Cloud Studio 内置Ollama、多个DeepSeek-R1模型 ,每月向开发者提供 10000 分钟免费算力。

    555
    • DeepSeek部署
  • laravel Request的所有方法详解

    laravel Request,cookie,http参数

    laravel Request的所有方法详解,laravel实现如何获取cookie、表单参数、提交的文件、laravel如何获取网址url、路径、ip、端口等。

    1465
    • laravel Request
    • cookie
    • http参数
  • laravel url路由中存在双斜杠(//)造成404问题

    laravel路由双斜杠

    解决在laravel框架下,网站的首页后面加上双斜杠(//),页面显示的尽然不是首页,是一个空白的页面状态码是200,或者报404错误。

    1825
    • laravel路由双斜杠
  • centos系统如何修改超级管理员root用户名

    root用户名修改,centos系统

    centos系统修改超级管理员root用户名实例演示,只要简单的将超级管理员root用户修改掉,那么被暴力破解几率就会直线下降。

    1204
    • root用户名修改
    • centos系统
  • Vue3 中全局引入 axios及其使用方法

    axios使用方法,Vue3

    Vue3如何安装axios,如何在全局使用axios,定义全局属性来使用axios,基本上每个页面都要使用到axios,因此在main.js中定义全局属性来实现axios告别繁杂的引用。

    845
    • axios使用方法
    • Vue3
  • JavaScript == 与 === 区别

    == 与 === 区别

    js中==和===的区别 ==和===的区别和一些比较规则: == 在比较类型不同的变量时,会进行数据类型转化,将二者转换成数据类型相同的变量,再进行比较。对于 string、number 等基础类型,== 和 === 是有区别的 a)不同类型间比较,== 之比较 "转化成同一类型后的值" 看 "值" 是否相等,=== 如果类型不同,其结果就是不等。

    807
    • == 与 === 区别
  • JavaScript简介

    JavaScript简介

    JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript

    1617
    • JavaScript简介
  • Vue中基于$event实现click事件获取html元素和css样式

    click事件,$event

    Vue中实现单击click事件获取html元素和css样式的解决方法,$event是一个对象 $event是指当前触发的是什么事件(鼠标事件,键盘事件等) $event.target则指的是事件触发的目标,即哪一个元素触发了事件,这将直接获取该dom元素。

    973
    • click事件
    • $event
-- 这已经是底线了,看看别的把! --