springboot整合Thymeleaf——自定义标签

SpringBoot整合Thymeleaf——自定义标签

项目地址: https://github.com/heng1234/springboot2.x/tree/master/boot_thymeleaf

基于上一章节springBoot整合Thymeleaf

thymeleaf 丰富的扩展性为我们实现自定义的标签实现了可能。这里以创建数据脱敏标签这个需求为例,讲解下如何实现自定义的dialect。

需求描述: controller的model中我们有客户的手机号信息:"phone": "11111111111"。 按照默认的写法,要在页面中展示手机号,HTML模板为:

<span th:text="${phone}"></span>

如果不使用自定义dialect,这里会将完整的手机号展示出来:

<span>11111111111</span>

接下来我们打算打造一个自定义方言:

<span hlvy:text="${phone}"></span>

实现如下的效果:

<span>11*******11</span>

除了首位2个字符全部替换为星号是自定义dialect的默认行为。除此之外,我们还可以使用正则表达式来定义替换规则。比如,除了前两个字符,其余的全替换为星号:

<p hlvy:text="${phone}" hlvy:pattern="^.{2}(.*)$"></p>

实现自定义标签处理器

对于Thymeleaf方言,自定义标签的处理逻辑是在标签处理器定义的。 自定义标签处理器需要实现AbstractAttributeTagProcessor 接口,标签的处理逻辑在doProcess 方法中编写。

数据脱敏标签的处理器代码如下所示:

ThSysTagProcessor

定义方言类

编写好之定义标签的处理器之后,别忘了定义一个方言类。在方言类中,我们需要给出方言的名称,前缀,处理优先级和涉及到的一系列自定义标签处理器。代码如下所示:

ThSysTagProcessor

注册bean

TfConfig

Controller

Phone.html

测试

http://localhost:7004/tf/phone.do?phone=18616283921

image-20191024163252385

下一章: Spring Boot MyBatis配置Druid多数据源

Last updated

Was this helpful?