8)Thymeleaf 基本对象表达式

x33g5p2x  于2021-12-24 转载在 其他  
字(3.3k)|赞(0)|评价(0)|浏览(532)

基本对象

#ctx 上下⽂对象

#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>

结果如下所示,没有值的表示值为 null,用的是 Springboot 应用对 Thymeleaf 的默认配置。

#locale

#locale:直接访问与当前请求关联的 java.util.Locale。

<body>
<p>[[${#locale}]]</p>
</body>

request和session属性web命名空间

   在 Web 环境中使⽤ Thymeleaf 时,可以使⽤⼀系列快捷⽅式来访问请求参数,会话属性和应⽤程序属性。注意这些不是上下⽂对象,⽽是添加到上下⽂ Map 集合中的变量,所以在没有#的情况下访问它们。 在某种程度上,它们作为命名空间。

可参考官网:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#web-context-namespaces-for-requestsession-attributes-etc.

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

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

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

相关文章