springboot(8)——springboot整合Thmeleaf

一、概述

Thymeleaf相似JSP、Velocity、Freemarker都是模板引擎,主要用来展现数据,原理以下javascript


springboot官网仍是推荐使用Thymeleaf而不是jsp,
html

不使用jsp的缘由是快速建立的springboot应用是jar应用,而且使用的是嵌入式的tomcat,固然Thymeleaf 在有网络和无网络的环境下皆可运行,即它可让美工在浏览器查看页面的静态效果,也可让程序员在服务器查看带数据的动态页面效果。这是因为它支持 html 原型,而后在 html 标签里增长额外的属性来达到模板+数据的展现方式。浏览器解释 html 时会忽略未定义的标签属性,因此 Thymeleaf 的模板能够静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
java

二、如何整合

第一步:引入Thmeleaf依赖
程序员


选择性修改thymeleaf版本
spring

第二步:把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染
浏览器


原理在boot中能够查看源码
tomcat


也能够经过在application配置文件中修改
springboot

而后再html页面中导入命名空间
服务器

<html lang="en" xmlns:th="http://www.thymeleaf.org">
微信


3、thymeleaf语法

上面,咱们环境已经搭建好了,加下来就是如何展现后台传来的数据,这里主要说下经常使用的一些标签

关键字 功能介绍 案例
th:id 替换id <input th:id="'xxx' + ${collect.id}"/>
th:text 文本替换 <p th:text="${collect.description}">description</p>
th:utext 支持html的文本替换 <p th:utext="${htmlcontent}">conten</p>
th:object 替换对象 <div th:object="${session.user}">
th:value 属性赋值 <input th:value="${user.name}" />
th:with 变量赋值运算 <div th:with="isEven=${prodStat.count}%2==0"></div>
th:style 设置样式 th:style="'display:' + @{(${sitrue} ? 'none' : 'inline-block')} + ''"
th:onclick 点击事件 th:onclick="'getCollect()'"
th:each 属性赋值 tr th:each="user,userStat:${users}">
th:if 判断条件 <a th:if="${userId == collect.userId}" >
th:unless 和th:if判断相反 <a th:href="@{/login}" th:unless=${session.user != null}>Login</a>
th:href 连接地址 <a th:href="@{/login}" th:unless=${session.user != null}>Login</a> />
th:switch 多路选择 配合th:case 使用 <div th:switch="${user.role}">
th:case th:switch的一个分支 <p th:case="'admin'">User is an administrator</p>
th:fragment 布局标签,定义一个代码片断,方便其它地方引用 <div th:fragment="alert">
th:include 布局标签,替换内容到引入的文件 <head th:include="layout :: htmlhead" th:with="title='xx'"></head> />
th:replace 布局标签,替换整个标签到引入的文件 <div th:replace="fragments/header :: title"></div>
th:selected selected选择框 选中 th:selected="({xxx.id} == {configObj.dd})"
th:src 图片类地址引入 <img class="img-responsive" alt="App Logo" th:src="@{/img/logo.png}" />
th:inline 定义js脚本可使用变量 <script type="text/javascript" th:inline="javascript">
th:action 表单提交的地址 <form action="subscribe.html" th:action="@{/subscribe}">
th:remove 删除某个属性 <tr th:remove="all"> 1.all:删除包含标签和全部的孩子。2.body:不包含标记删除,但删除其全部的孩子。3.tag:包含标记的删除,但不删除它的孩子。4.all-but-first:删除全部包含标签的孩子,除了第一个。5.none:什么也不作。这个值是有用的动态评估。
th:attr 设置标签属性,多个属性能够用逗号分隔 好比th:attr="src=@{/image/aa.jpg},title=#{logo}",此标签不太优雅,通常用的比较少。

 

关于更多thmeleaf标签的使用能够关注微信公众号  java一号 发送 b100 获取

书籍截图以下

相关文章
相关标签/搜索