Thymeleaf 提供了一些对象,可以直接使用。
#ctx:上下文对象。根据环境(独立环境或Web环境)实现 org.thymeleaf.context.IContext 或 org.thymeleaf.context.IWebContext。
public interface IWebContext extends IContext。可参考官网:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#base-objects
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>
#locale:直接访问与当前请求关联的 java.util.Locale。
<body>
<p>[[${#locale}]]</p>
</body>
在 Web 环境中使用 Thymeleaf 时,可以使用一系列快捷方式来访问请求参数,会话属性和应用程序属性。注意这些不是上下文对象,不是添加到上下文 Map 集合中的变量,所以在没有#的情况下访问它们。 在某种程度上,它们作为命名空间。
-
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>
1、session:用于获取 session 属性。与 param 同理,只是作用域不同而已。
- 2、//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>
- 3、比如后台设置了 HttpSession 属性值:
User user = new User();
user.setName("Admin");
request.getSession().setAttribute("user",user);//设置 HttpSession
则页面可以取值如下:
<b>[[${session.user.name}]]</b>
<b th:if="${session.user != null}" th:text="${session.user.name}"></b>
注意:不能使用直接使用 ${user.name} 取值,必须借助 session 对象。
-
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 环境中,还可以直接访问以下对象(请注意,这些对象不是Map集合/命名空间)。
详见官网:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#web-context-objects