Thymeleaf是一个Java类库,它是一个xml/xhtml/html5的模板引擎,可以作为MVC的Web引用的View层。

Thymeleaf还提供了额外的模块与SpringMVC集成,因此推荐使用Thymeleaf来替代JSP

1、引入Thymeleaf

  下面的diam是一个基本的Thymeleaf模板页面,在这里引入Boostrap(作为样式控制)和jQuery(DOM操作)

<html xmlns:th="http://www.thymeleaf.org"><!--1-->
<head>
<meta content="text/html;charset=UTF-8"/>
<link th:src="@{bootstrap/css/bootstrap.min.css}" rel="stylesheet"/><!--2-->
<link th:src="@{bootstrap/css/bootstrap-theme.min.css}" rel="stylesheet"/><!--2-->
</head> <body>
<script th:src="@{jquery-1.10.2.min.js}" type="text/javascript"></script><!--2-->
<script th:src="@{bootstrap/css/bootstrap.min.js}"></script><!--2-->
</body>
</html>

Analysize:

  a、通过xmlns:th=http://www.thymeleaf.org命名空间,将镜头页面转换为动态的视图。需要进行动态处理的元素将使用“th:”为前缀;

  b、通过“@{}”引用web静态资源,这在JSP下是极易出错的。

2、访问model中的数据

  通过“${}”访问model中的属性,这和JSP极为相似

<div lass = "panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">访问model</h3>
</div>
<div class="panel-body">
<span th:text="${singlePerson.name}"></span>
</div>
</div>

Analysize:

  使用<span th:text="${singlePerson.name}"></span>访问model中的singlePerson的name属性。注意:需要处理的动态内容需要加上“th:”前缀。

3、model中的数据迭代

  Thymeleaf的迭代和JSP的写法相似

<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">列表</h3>
</div>
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item" th:each="person:${people}">
<span th:text="${person.name}"></span>
<span th:text="${person.age}"></span>
</li>
</ul>
</div>
</div>

Analysize:

  使用th:each来做循环迭代(th:each="person:${people}"),person作为迭代元素来使用。然后像上面一样访问迭代元素中的属性。

4、数据判断

<div th:if="${not #lists.isEmpty(people)}">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">列表</h3>
</div>
<div class="panel-body">
<ul class="list-group">
<li class="list-group-item" th:each="person:${people}">
<span th:text="${person.name}"></span>
<span th:text="${person.age}"></span>
</li>
</ul>
</div>
</div>
</div>

Analysize:

  通过${not#lists.isEmpty{people}}表达式判断people是否为空。Thymeleaf支持>、<、>=、<=、==、!=作为比较条件,同时也支持将SpringEL表达式语言用于条件中。

5、在JavaScript中访问model

  在项目中,需要在JavaScript访问model中的值,在Thymeleaf里实现代码如下:

<script th:inline="javascript">
var single = [[${singlePerson}]];
console.log(single.name + "/" + single.age)
</script>

Analysize:

  通过th:inline="javascript"添加到script标签,这样JavaScript代码即可访问model中的属性

  通过“[[${}]]”格式获得实际的值

还有一种时需要在html的代码里访问model中的属性,例如需要在列表后单击每一行后面的按钮获得model中的值,可做如下处理:

<li class="list-group-item" th:each="person:${people}">
<span th:text="${person.name}"></span>
<span th:text="${person.age}"></span>
<button class="btn" th:onclick="'getName(\'' + ${person.name} + '\');'">获得名字</button>
</li>

Analysize:

  注意格式th:onclick="'getName(\"+${person.name} + '\');'"。

6、其他知识

  更多完整的Thymeleaf的知识,可以查看https://www.thymeleaf.org/官网

Thymeleaf基础知识的更多相关文章

  1. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  2. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  3. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  6. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  7. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  8. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  9. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

随机推荐

  1. the swap trick用于锐减过剩容量

    1.由于vector的复制构造函数只为被复制的vector分配它所需要的空间,故可以用如下的方式来削减vector v中过剩的容量:vector<int>(v).swap(v) 2.the ...

  2. .NET Services Stack笔记之手写版

  3. kuangbin专题十二 HDU1114 Piggy-Bank (完全背包)

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  4. 批量mvn 打包 bat文件命令

    @echo off cd /d "E:\project\Branches\Source\" svn up mvn clean install -Dmaven.test.skip=t ...

  5. thinkphp 3.0 核心函数U的一个致命bug

    最近在玩thinkphp,感觉内置函数 U 挺强大的! 传递多个参数时,出乱子了(window环境下,xampp) 例如 echo U('Blog/cate',array('cate_id'=> ...

  6. matplolib实例之 城市气候与海洋的关系研究

  7. 利用RELK进行日志收集

    利用RELK进行日志收集 发布时间:April 3, 2018 // 分类:运维工作,开发笔记,python // No Comments 前不久在做应急的总是遇到要求对日志进行分析溯源,当时就想到如 ...

  8. Java字符串拆分和字符串连接

    Java字符串拆分/连接 public class LierString{ //------------------------------------------------------------ ...

  9. Python + Selenium 基础篇 - 打开和关闭浏览器

    1.首先要下载浏览器对应的driver,并放到你的python安装目录 Chrome浏览器(chromedriver): http://npm.taobao.org/mirrors/chromedri ...

  10. 本地git的使用

    git和svn的解析 git 教程 git rebase的用法 attion: one:  git中是严格区分大小写的,文件名字大小写敏感 two:  git中分为:工作区,暂存区,分支 three: ...