深色模式
基础对象
#ctx:上下文对象
#ctx 是 Thymeleaf 的核心上下文对象,其具体实现类由运行环境决定:独立运行环境(非 Web):实现 org.thymeleaf.context.IContext 接口;Web 运行环境(如 Spring MVC):实现 org.thymeleaf.context.IWebContext 接口。
注意:
#vars和#root是该对象的别名,功能完全一致,但官方推荐使用#ctx(语义更清晰,便于维护)。
html
<!-- 请查阅 org.thymeleaf.context.IContext 类的 Javadoc API 文档。 -->
${#ctx.locale}
<!-- 获取上下文所有变量的名称(返回 Set<String> 集合) -->
${#ctx.variableNames}
<!-- 请查阅 org.thymeleaf.context.IWebContext 类的 Javadoc API 文档。 -->
<!-- 获取 HttpServletRequest 对象 -->
${#ctx.request}
<!-- 获取 HttpServletResponse 对象 -->
${#ctx.response}
<!-- 获取 HttpSession 对象 -->
${#ctx.session}
<!-- 获取 ServletContext(应用上下文)对象 -->
${#ctx.servletContext}#locale 是访问当前请求关联的 java.util.Locale 对象的快捷方式,等价于 ${#ctx.locale},简化写法:
html
<!-- 直接获取当前语言环境 -->
${#locale}核心解析
- 环境适配性:
#ctx的能力随环境变化——非 Web 环境仅能获取语言、变量名等基础信息;Web 环境可直接操作 request/response/session 等 Servlet 核心对象,是模板与 Web 容器交互的核心入口。 - 别名的使用建议: 尽管
#vars/#root可用,但#ctx是官方推荐写法(Context 的缩写,语义更直观),避免因别名导致代码理解成本增加。 - 典型应用场景:
- 判断语言环境:
${#locale.language == 'zh'}(区分中英文文案); - 检查变量是否存在:
${#ctx.containsVariable('user')}(避免空指针); - 获取请求路径:
${#ctx.request.contextPath}(拼接绝对 URL)。
- 判断语言环境:
总结
#ctx是 Thymeleaf 表达式的核心上下文对象,实现类随运行环境(独立/Web)不同而变化;#locale是#ctx.locale的快捷方式,用于快速访问当前语言环境;#vars/#root是#ctx的别名,优先使用#ctx保证代码语义清晰;- Web 环境下的
#ctx可直接操作 Servlet 相关对象,是模板与 Web 容器交互的关键。
