8)Thymeleaf 基本对象表达式

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

基本对象

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

  1. <body>
  2. <p>#ctx.locale=[[${#ctx.locale}]]</p>
  3. <p>#ctx.request=[[${#ctx.request}]]</p>
  4. <p>#ctx.response=[[${#ctx.response}]]</p>
  5. <p>#ctx.session=[[${#ctx.session}]]</p>
  6. <p>#ctx.servletContext=[[${#ctx.servletContext}]]</p>
  7. <p>#ctx.variableNames=[[${#ctx.variableNames}]]</p>
  8. </body>

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

#locale

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

  1. <body>
  2. <p>[[${#locale}]]</p>
  3. </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

  1. <body>
  2. <!--/*获取请求参数个数*/-->
  3. <p>${param.size()}=[[${param.size()}]]</p>
  4. <!--/*判断请求参数是否为空*/-->
  5. <p>${param.isEmpty()}=[[${param.isEmpty()}]]</p>
  6. <!--判断参数是否包含某个 key,亲测无效,总数返回 true-->
  7. <p>${param.containsKey('u_id')}=[[${param.containsKey('u_id')}]]</p>
  8. <!--获取某个参数值,不存在时为null-->
  9. <p>${param.u_id}=[[${param.u_id}]]</p>
  10. </body>

session

1、session:⽤于获取 session 属性。与 param 同理,只是作用域不同而已。

2、//See javadoc API for class org.thymeleaf.context.WebSessionVariablesMap

  1. <body>
  2. <!--/*获取请求参数个数*/-->
  3. <p>${session.size()}=[[${session.size()}]]</p>
  4. <!--/*判断请求参数是否为空*/-->
  5. <p>${session.isEmpty()}=[[${session.isEmpty()}]]</p>
  6. <!--判断参数是否包含某个 key,亲测无效,总数返回 true-->
  7. <p>${session.containsKey('u_id')}=[[${session.containsKey('u_id')}]]</p>
  8. <!--获取某个参数值,不存在时为null-->
  9. <p>${session.u_id}=[[${session.u_id}]]</p>
  10. </body>

3、比如后台设置了 HttpSession 属性值:

  1. User user = new User();
  2. user.setName("Admin");
  3. request.getSession().setAttribute("user",user);//设置 HttpSession

则页面可以取值如下:

  1. <b>[[${session.user.name}]]</b>
  2. <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

  1. <body>
  2. <!--/*获取请求参数个数*/-->
  3. <p>${application.size()}=[[${application.size()}]]</p>
  4. <!--/*判断请求参数是否为空*/-->
  5. <p>${application.isEmpty()}=[[${application.isEmpty()}]]</p>
  6. <!--判断参数是否包含某个 key,亲测无效,总数返回 true-->
  7. <p>${application.containsKey('u_id')}=[[${application.containsKey('u_id')}]]</p>
  8. <!--获取某个参数值,不存在时为null-->
  9. <p>${application.u_id}=[[${application.u_id}]]</p>
  10. </body>

web 上下⽂对象

Web 环境中,还可以直接访问以下对象(请注意,这些对象不是Map集合/命名空间)。

详见官网:https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#web-context-objects

相关文章