常用标签
在HTML页面上使用Thymeleaf标签,Thymeleaf 标签能够动态地替换掉静态内容,使页面动态展示。
为了大家更直观的认识Thymeleaf模板,下面展示一个在HTML文件中嵌入了Thymeleaf的页面文件,示例代码如下:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" media="all"
href="../../css/gtvg.css" th:href="@{/css/gtvg.css}" />
<title>Title</title>
</head>
<body>
<p th:text="#{hello}">欢迎进入Thymeleaf的学习</p>
</body>
</html>
上述代码中,“xmlns:th="http://www.thymeleaf.org
"”用于引入Thymeleaf模板引擎标签,使用关键字“th”标注标签是Thymeleaf模板提供的标签,其中,“th:href”用于引入外联样式文件,“th:text”用于动态显示标签文本内容。除此之外,Thymeleaf模板提供了很多标签,接下来,通过一张表罗列Thymeleaf的常用标签,具体如表1所示。
表1 Thymeleaf常用标签
th:标签 | 说明 |
---|---|
th:insert | 页面片段包含(类似JSP中的include标签) |
th:replace | 页面片段包含(类似JSP中的include标签) |
th:each | 元素遍历(类似JSP中的c:forEach标签) |
th:if | 条件判断,如果为真 |
th:unless | 条件判断,如果为假 |
th:switch | 条件判断,进行选择性匹配 |
th:case | 条件判断,进行选择性匹配 |
th:object | 变量声明 |
th:with | 变量声明 |
th:attr | 通用属性修改 |
th:attrprepend | 通用属性修改,将计算结果追加前缀到现有属性值 |
th:attrappend | 通用属性修改,将计算结果追加后缀到现有属性值 |
th:value | 属性值修改,指定标签属性值 |
th:href | 用于设定链接地址 |
th:src | 用于设定链接地址 |
th:text | 用于指定标签显示的文本内容 |
th:utext | 用于指定标签显示的文本内容,对特殊标签不转义 |
th:fragment | 声明片段 |
th:remove | 移除片段 |
在表1中,列举了Thymeleaf模板引擎的一些常用属性,并对这些属性进行了优先级排序和功能说明。关于其他更多的属性支持,读者在使用过程中可以查看官方文档,也可以通过开发工具的快捷提示信息进行使用。
需要说明的是,上述以HTML为基础嵌入了Thymeleaf模板引擎,并使用th:属性进行了页面需求开发。这种Thymeleaf模板页面虽然与纯HTML页面基本相似,但已经不是一个标准的HTML 5页面了,这是因为在Thymeleaf页面中使用的th:属性是HTML 5规范所不允许的。如果我们想要使用Thymeleaf模板进行纯HTML 5的页面开发,可以使用data-th-属性替换th:属性进行页面开发。例如,将上面的示例使用data-th-*属性进行修改,示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" media="all"
href="../../css/gtvg.css" data-th-href="@{/css/gtvg.css}" />
<title>Title</title>
</head>
<body>
<p data-th-text="#{hello}">欢迎进入Thymeleaf的学习</p>
</body>
</html>
上述代码中,使用标准HTML 5语法格式嵌入了Thymeleaf模板引擎进行页面动态数据展示。从示例可以看出,在使用data-th-属性时,不需要引入Thymeleaf标签,并且属性名要使用data-th-的形式。不过使用这种方式不会出现属性的快捷提示,对开发来说比较麻烦,因此在实际开发中,相对推荐使用引入Thymeleaf标签的形式进行模板引擎页面的开发。
小提示:
Thymeleaf支持处理六种模板视图,包括HTML、XML、TEXT、JAVASCRIPT、CSS和RAW。本章主要讲解Thymeleaf对HTML页面的嵌入处理,Thymeleaf对其他模板视图的嵌入使用略有不同,读者在使用时可以查看Thymeleaf文档说明。