Thymeleaf是一种现代的服务器端Java模板引擎,用于Web和独立环境,能够处理HTML、XML、JavaScript、CSS甚至纯文本。以下是Thymeleaf模板语法的基本特点和常用语法元素:
- 表达式 :
- 使用双花括号
{{...}}
来表示表达式,例如{{user.name}}
。这些表达式会在页面渲染时被解析并替换为具体的值。
- Thymeleaf属性 :
- 使用
th:
前缀表示Thymeleaf属性,例如th:text
、th:if
、th:each
等。这些属性会在页面渲染时被Thymeleaf解析和处理。
- 文本内容 :
- 使用
th:text
属性来设置元素的文本内容。例如,<p th:text="${user.name}">Hello, World!</p>
会将user
对象的name
属性的值作为该元素的文本内容。
- 条件判断 :
- 使用
th:if
属性来进行条件判断。例如,<div th:if="${user.isAdmin()}">Admin User</div>
会在user
对象的isAdmin()
方法返回true
时才渲染该元素。
- 循环 :
- 使用
th:each
属性来遍历集合。例如,<ul> <li th:each="item : ${items}"> {{item}} </li> </ul>
会遍历items
集合,并为每个元素生成一个<li>
标签。
- 引入代码块 :
- 使用
th:insert
、th:replace
和th:include
来引入代码块。这些属性常用于公共代码块的提取,例如<div th:insert="fragments :: header"></div>
会插入名为header
的代码块。
- 定义代码块 :
- 使用
th:fragment
来定义代码块,方便被th:insert
引用。例如,<div th:fragment="header"> <h1>Welcome</h1> </div>
定义了一个名为header
的代码块,可以在其他模板中通过th:insert="fragments :: header"
引用。
- 声明变量 :
- 使用
th:object
属性来声明变量,一般和*{}
一起配合使用。例如,<div th:object="${user}"> <p>Name: <span th:text="${user.name}"></span></p> </div>
会将user
对象作为局部变量,并在<span>
标签中输出其name
属性。
- 设置标签属性 :
- 使用
th:attr
属性来设置标签属性。例如,<a th:attr="href='http://example.com/' + ${user.id}">Link</a>
会为<a>
标签设置href
属性,其值为http://example.com/
加上user.id
的值。
- 表达式语法 :
- Thymeleaf提供了简洁的表达式语法,包括
${}
(用于变量、选择和URL表达式)和#{}
(用于消息表达式)。例如,<p th:text="${user.name}">Hello, ${user.name}!</p>
会输出user.name
的值。
建议
-
学习Thymeleaf时,建议从基本的表达式和属性开始,逐步掌握条件判断、循环和代码块插入等高级功能。
-
通过实际编写和测试模板,加深对Thymeleaf语法的理解和应用。
-
参考Thymeleaf官方文档和示例,以获得更全面的了解和实践指导。