变量表达式: ${...}
${session.user.name} 它们作为属性值或作为它们的一部分,取决于属性: <span th:text="${book.author.name}"> 上面的表达式与下面是相同的(在OGNL和SpringEL中): ((Book)context.getVariable("book")).getAuthor().getName() 但是不仅在涉及输出的场景中找到变量表达式,而且还可以使用更复杂的处理方式,如:条件,迭代…等等。
功能:获取对象的属性值、调用方法
选择变量表达式: *{...}
使用th:object属性的表达式结果。让我们在用户资料(userprofile.html)页面使用一个:
<div th:object="${session.user}">
<p>Name: <span th:text="*{firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p>
</div>
这等价于:
<div>
<p>Name: <span th:text="${session.user.firstName}">Sebastian</span>.</p>
<p>Surname: <span th:text="${session.user.lastName}">Pepper</span>.</p>
<p>Nationality: <span th:text="${session.user.nationality}">Saturn</span>.</p>
</div>
当然,美元符号语法与星号语法可以混合使用:
链接url表达式: @{...}
URL有不同的类型:
绝对URL: http://www.thymeleaf.org
相对URL,可以是:
相对于网页: user/login.html
相对于上下文: /itemdetails?id=3 (服务器上上下文的名字会被自动添加)
相对于服务器: ~/billing/processInvoice (允许在另一个上下文里调用URL(= application),在同一个服务器上
相对于协议的URL: //code.jquery.com/jquery-2.0.3.min.js
<!-- Will produce 'http://localhost:8080/gtvg/order/details?orderId=3' (plus rewriting) -->
<a href="details.html"
th:href="@{http://localhost:8080/gtvg/order/details(orderId=${o.id})}">view</a>
<!-- Will produce '/gtvg/order/details?orderId=3' (plus rewriting) -->
<a href="details.html" th:href="@{/order/details(orderId=${o.id})}">view</a>
<!-- Will produce '/gtvg/order/3/details' (plus rewriting) -->
<a href="details.html" th:href="@{/order/{orderId}/details(orderId=${o.id})}">view</a>
消息表达式: #{...}
用于显示页面静态文本,将静态文本维护在properties文件中
使用方式
1. html页面代码: <p th:utext=”#{message}”> Welcome to our country</p>
2. 配置文件application.yml spring.messages.basename=i18n/message 在resources/i18n/message目录下创建 message.properties 在文件中配置message=using thymeleaf message expressions
3. 控制类中无需赋值,直接返回
片段表达式: ~{...}
最常见的是使用th:insert或th:replace来插入片段
th:insert :保留主标签,保留th:fragment的主标签。
th:replace :替换主标签,保留th:fragment的主标签。
th:include :保留主标签,不要th:fragment的主标签。(官方3.0后不推荐)
例如如下模板:
<footer th:fragment="copy"> © 2019</footer>
我们通过th:insert 和 th:replace来加载模板
<div th:insert="footer :: copy"></div>
<div th:replace="footer :: copy"></div>
<div th:include="footer :: copy"></div>
返回的HTML如下:
<div><footer> © 2019</footer></div>
<footer> © 2019</footer>
<div> © 2019</div>