之前在咱们开发我的项目,做view试图模块时,咱们通常是应用JSP,然而随着技术的倒退,以及springboot的应用日渐增多,在springboot的我的项目中曾经慢慢不再应用JSP去作为view,而是逐步采纳了Thymeleaf这项技术.

Thymeleaf

简略地说,Thymeleaf是一个html模板引擎,提供了与Spring MVC进行整合的API,可作为MVC架构中Web利用的View层.

而在springboot中导入Thymeleaf的办法也在上文--thymeleaf导入中有所介绍,也不做过多赘述.

然而有一点须要留神:可能在开发过程中,大家会感觉每次更改页面后,都要从新重启服务,很是麻烦与反人类,能够通过配置热启动来改善.

spring.thymeleaf.cache=false

cache是thymeleaf带有的一个缓存区,咱们将它设置为false即可不须要每次重启服务,间接刷新界面就能够(但要留神服务端的代码批改的话还是须要重启服务器)

但也不要一味的认为cache的设置就是麻烦的,它次要的作用是要在我的项目上线时设置为true(不设置默认为true),这样它会提供一个缓存区,不必每次都向服务器申请数据,能够无效的进步响应速度.

Thymeleaf标签

关与Thymeleaf标签的具体应用在官网中的文档中都能够找到,本文只是说一些罕用到的标签,详解还请参照官网文档.

数据迭代


在thymeleaf中数据的循环迭代应用的是th:each="x1:${x2}",
作用能够取出域中的数据(数组/汇合)去进行循环,通常配合th:text="${x1.x3}"应用.

其中x2为域中存储的数据名称;x1为本人定义的名称,用于在页面中应用数据;x3为x2中的属性,要和get办法名统一.

代码如下:

<tr th:each="g:${list}">    <td th:text="${g.id}"></td>    <td th:text="${g.name}"></td></tr>

超链接


在thymeleaf中超链接应用th:href="@{x1(x2=${x3.x4})}",

x1为超链接指向的门路;x2为本人命名的名称;x3,x4为上边数据迭代中的th:text="${x1.x3}"x1和x3.

代码如下:

<a th:href="@{/goods/doDeleteById(id=${g.id})}">delete</a>

对于超链接指向地址,还提供了restful格调的写法,
平时咱们所写代码地址上带申请数据个别为:a/b/c?id=x
而restful这种格调为:a/b/c/{id}

代码如下:

<a th:href="@{/goods/doFindById/{id}(id=${g.id})}">update</a>

在这种语法中,{id}为一个变量表达式,由前面()内的内容补充,如果咱们心愿在后端的Controller类的办法参数中取得传递的参数,就须要加@PathVariable形容参数.

提交表单


在thymeleaf中提交表单采纳th:action="@{x1}"

x1为表单所要提交至的地址.

代码如下:

<form th:action="@{/goods/doUpdateGoods}" method="POST"><input type="text" name="name" th:value="${goods.name}">

当你感觉上述代码如果显示时有很多属性,而每个属性都须要${对象名.属性名}的形式来显示会很反复,想把对象名间接提取进去,能够通过在表单上加th:object,

代码如下:

<form th:action="@{/goods/doUpdateGoods}" method="POST" th:object="${goods}"><input type="text" name="name" th:value="${name}">

拓展

1)当咱们的url地址没有以"/"结尾时,默认这个内容要替换到当初地址栏url最初一个"/"后的内容进行拼接.

2)申请转发:return "forward:doGoodsUI";
重定向:return "redirect:/goods/doGoodsUI";
申请转发因为是服务端外部转发所以能够不写"/",间接跳转;
而重定向因为是二次申请二次响应,且能够跳转至别的资源甚至是别的服务器,所以须要写相对地址,必须以"/"结尾!