在 Web 项目中,通常会存在一些公共页面片段(重复代码),例如头部导航栏、侧边菜单栏和公共的 js css 等。我们一般会把这些公共页面片段抽取出来,存放在一个独立的页面中,然后再由其他页面根据需要进行引用,这样可以消除代码重复,使页面更加简洁。
抽取公共页面:Thymeleaf 作为一种优雅且高度可维护的模板引擎,同样支持公共页面的抽取和引用。我们可以将公共页面片段抽取出来,存放到一个独立的页面中,并使用 Thymeleaf 提供的 th:fragment 属性为这些抽取出来的公共页面片段命名。
例如:将公共页面片段抽取出来,存放在 commons.html 中,代码如下。
公共页面片段
在 Thymeleaf 中,我们可以使用以下 3 个属性,将公共页面片段引入到当前页面中。
使用上 3 个属性引入页面片段,都可以通过以下 2 种方式实现。
通常情况下,~{} 可以省略,其行内写法为 [[~{…}]] 或 [(~{…})],其中 [[~{…}]] 会转义特殊字符,[(~{…})] 则不会转义特殊字符。
例如:
在页面 fragment.html 中引入 commons.html 中声明的页面片段,可以通过以下方式实现。
------------------------------------------------
------------------------------------------------
公共页面片段
公共页面片段
------------------------------------------------
公共页面片段
公共页面片段
------------------------------------------------
公共页面片段
公共页面片段
Thymeleaf 在抽取和引入公共页面片段时,还可以进行参数传递,大致步骤如下:
引用公共页面片段时,我们可以通过以下 2 种方式,将参数传入到被引用的页面片段中:
注:
- 若传入参数较少时,一般采用第二种方式,直接将参数值传入页面片段中;
- 若参数较多时,建议使用第一种方式,明确指定参数名和参数值,。
------------------------------------------------
------------------------------------------------
...