之前在咱们开发我的项目,做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";
申请转发因为是服务端外部转发所以能够不写"/",间接跳转;
而重定向因为是二次申请二次响应,且能够跳转至别的资源甚至是别的服务器,所以须要写相对地址,必须以"/"结尾!