Skip to content

混合使用耦合式与解耦式逻辑

启用解耦式模板逻辑后,它并非强制生效的规则。启用该功能仅意味着:模板引擎会尝试查找包含解耦逻辑的资源文件,若该文件存在,则解析并将其与原始模板合并;若不存在,也不会抛出任何错误。

此外,你还可以在同一个模板中混合使用耦合式和解耦式逻辑——例如,在原始模板文件中直接添加部分 Thymeleaf 属性,同时将另一部分逻辑交由独立的解耦逻辑文件管理。这种场景下最常用的方式,是使用 Thymeleaf 3.0 新增的 th:ref 属性。

补充说明

  • 耦合式逻辑:即传统写法,直接在 HTML 标签上写 th:textth:each 等属性,逻辑与标记紧耦合;
  • 解耦式逻辑:逻辑写在独立的 .th.xml 文件中,模板文件仅保留纯标记;
  • th:ref 属性的作用:可在模板文件中为节点定义“引用标识”,解耦逻辑文件中通过该标识定位节点,无需依赖 id/class 等原生属性,进一步降低设计与开发的耦合(例如:<div th:ref="userName"></div>,在 .th.xml 中用 sel="[th:ref='userName']" 定位该节点);
  • 启用解耦逻辑的前提:需在模板引擎配置中开启解耦逻辑功能(默认未开启),核心配置如下:
    java
    templateEngine.setEnableDecoupledLogic(true);

总结

  1. 解耦式逻辑是“可选功能”,无对应的 .th.xml 文件时,模板引擎会直接使用原始模板,不会报错;
  2. 支持在同一模板中混合耦合/解耦逻辑,灵活适配不同场景的需求;
  3. Thymeleaf 3.0 的 th:ref 属性是混合逻辑模式下的常用工具,可更优雅地关联模板节点与解耦逻辑。