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

springBoot之Thymeleaf常见语法

1154

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,注意版本的兼容性。

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

    html转义,springboot

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

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

    SpringBoot,异常处理

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

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

    springboot 404页面

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

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

    Springboot,cookie

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

    862
    • 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这些条件判断一样,所以这里就不再详细叙述了,下面就直接给出例子!!!

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

    Thymeleaf,日期格式

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

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

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

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

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

    SpringBoot跨域

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

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

    Java获取IP

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

    801
    • Java获取IP
  • Vue3 中全局引入 axios及其使用方法

    axios使用方法,Vue3

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

    800
    • axios使用方法
    • Vue3
  • 拥有一个博客网站需要多少钱

    博客网站

    如果你喜欢记录生活,那么拥有一个个人的博客网站还是非常不错的,从此你不再需要遵守任何平台的规则,只需要遵守我国法律即可。人生在世短短几十年,为短暂的人生留下点痕迹,成为数字世界的终极身份证。今天潘某人SEO就为大家大致的总结一下拥有一个自己网站需要哪几步并需要多少花费。

    123
    • 博客网站
  • 网站本地服务器搭建

    centos系统安装

    网站搭建第一步本地服务器的架设centos系统安装,对于刚接触网站编程的小伙伴不要先急着去购买服务器,当然土豪请随意。我们可以现在自己电脑上本地搭建一个虚拟服务器环境来运行,可以检测下自己是不是真的能力去搭建一个网站。

    933
    • centos系统安装
  • Vue 中使用 localStorage 详解

    localStorage,Vue

    什么是localStorage,与cookie的区别是什么,localStorage的生存期、数据结构、域名限制、浏览器支持;localStorage常用方法,存储数据setItem、读取数据getItem、修改数据、删除数据。

    1285
    • localStorage
    • Vue
  • js防抖原理及其实现

    js防抖

    js防抖原理及其实现,在前端中有一些事件会频繁的触发容易造成页面卡顿,例如:window 的 resize、scroll、mousedown、mousemove、keyup、keydown等事件。js抖动的原因:短的时间内多次连续触发事件,首先会十分影响性能,同时大量运行结果被集中输出,结果之间不规律的冲突变化导致页面抖动。

    1151
    • js防抖
  • 原生js 复制内容到剪切板代码实现

    js 复制内容,剪切板代

    有时候为了提升用户体验,比如在某些页面需要实现点击内容,将内容复制到剪切板,可以提升用户复制内容的操作效率;因此在实际操作中通过一定的事件触发复制功能是非常有意义的行为,下面是两种通过原生js实现复制内容到剪切板。

    1086
    • js 复制内容
    • 剪切板代
-- 这已经是底线了,看看别的把! --