8)Thymeleaf 基本物件表示式
目錄
Thymeleaf 提供了一些物件,程式設計師可以直接使用。
基本物件
#ctx 上下⽂物件
#ctx:上下⽂物件。根據環境(獨⽴環境或Web環境)實現 org.thymeleaf.context.IContext 或 org.thymeleaf.context.IWebContext。
public interface IWebContext extends IContext。可參考官網:
org.thymeleaf.context.IContext 介面:
${#ctx.locale}
${#ctx.variableNames}org.thymeleaf.context.IWebContext 介面:
${#ctx.request}
${#ctx.response}
${#ctx.session}
${#ctx.servletContext}
<body> <p>#ctx.locale=[[${#ctx.locale}]]</p> <p>#ctx.request=[[${#ctx.request}]]</p> <p>#ctx.response=[[${#ctx.response}]]</p> <p>#ctx.session=[[${#ctx.session}]]</p> <p>#ctx.servletContext=[[${#ctx.servletContext}]]</p> <p>#ctx.variableNames=[[${#ctx.variableNames}]]</p> </body>
結果如下所示,沒有值的表示值為 null,用的是 Springboot 應用對 Thymeleaf 的預設配置。
#locale
#locale:直接訪問與當前請求關聯的 java.util.Locale。
<body>
<p>[[${#locale}]]</p>
</body>
request和session屬性web名稱空間
在 Web 環境中使⽤ Thymeleaf 時,可以使⽤⼀系列快捷⽅式來訪問請求引數,會話屬性和應⽤程式屬性。注意這些不是上下⽂物件,⽽是新增到上下⽂ Map 集合中的變數,所以在沒有#的情況下訪問它們。 在某種程度上,它們作為名稱空間。
param
param:⽤於獲取請求引數(瀏覽器url中的請求引數)。如 $ {param.foo} 是⼀個帶有 foo 請求引數值的 String [],$ {param.foo [0]} ⽤於獲取第⼀個值。
//See javadoc API for class org.thymeleaf.context.WebRequestParamsVariablesMap
<body>
<!--/*獲取請求引數個數*/-->
<p>${param.size()}=[[${param.size()}]]</p>
<!--/*判斷請求引數是否為空*/-->
<p>${param.isEmpty()}=[[${param.isEmpty()}]]</p>
<!--判斷引數是否包含某個 key,親測無效,總數返回 true-->
<p>${param.containsKey('u_id')}=[[${param.containsKey('u_id')}]]</p>
<!--獲取某個引數值,不存在時為null-->
<p>${param.u_id}=[[${param.u_id}]]</p>
</body>
session
session:⽤於獲取 session 屬性。與 param 同理,只是作用域不同而已。
//See javadoc API for class org.thymeleaf.context.WebSessionVariablesMap
<body>
<!--/*獲取請求引數個數*/-->
<p>${session.size()}=[[${session.size()}]]</p>
<!--/*判斷請求引數是否為空*/-->
<p>${session.isEmpty()}=[[${session.isEmpty()}]]</p>
<!--判斷引數是否包含某個 key,親測無效,總數返回 true-->
<p>${session.containsKey('u_id')}=[[${session.containsKey('u_id')}]]</p>
<!--獲取某個引數值,不存在時為null-->
<p>${session.u_id}=[[${session.u_id}]]</p>
</body>
application
application:⽤於獲取應⽤程式或servlet上下⽂屬性。與 param 同理,只是作用域不同而已。
//See javadoc API for class org.thymeleaf.context.WebServletContextVariablesMap
<body>
<!--/*獲取請求引數個數*/-->
<p>${application.size()}=[[${application.size()}]]</p>
<!--/*判斷請求引數是否為空*/-->
<p>${application.isEmpty()}=[[${application.isEmpty()}]]</p>
<!--判斷引數是否包含某個 key,親測無效,總數返回 true-->
<p>${application.containsKey('u_id')}=[[${application.containsKey('u_id')}]]</p>
<!--獲取某個引數值,不存在時為null-->
<p>${application.u_id}=[[${application.u_id}]]</p>
</body>
web 上下⽂物件
Web 環境中,還可以直接訪問以下物件(請注意,這些物件不是Map集合/名稱空間)。
詳見官網:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#web-context-objects