thymeleaf语法

变量表达式: ${...}

${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"> &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> &copy; 2019</footer></div>
  <footer> &copy; 2019</footer>
  <div> &copy; 2019</div>

 

 

 

 

 

 

 

 

 

 

上一篇:22.Thymeleaf 模板如何遍历集合输出?嘻哈的简写笔记——SpringBoot


下一篇:SpringBoot---条件(th:if)