Thymeleaf常用标签说明

本文介绍了Thymeleaf在SpringBoot项目中替代JSP作为视图层的优势,以及如何配置Thymeleaf实现热启动,避免每次修改页面后重启服务。Thymeleaf通过`th:each`标签实现数据迭代,`th:href`处理超链接,`th:action`处理表单提交,并提供了restful风格的URL写法。同时,文章提到了URL的相对路径规则以及请求转发与重定向的区别。
摘要由CSDN通过智能技术生成

之前在我们开发项目,做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";
请求转发由于是服务端内部转发所以可以不写"/",直接跳转;
而重定向由于是二次请求二次响应,且可以跳转至别的资源甚至是别的服务器,所以需要写绝对地址,必须以"/"开头!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值