thymeleaf中的模板布局
一.包括模板片段:
1:定义和引用片段,我们经常会想要包含在模板片段来自其他模板。常见的用途是页脚、标题、菜单…;
为了做到这一点,Thymeleaf需要我们定义包含可用的片段,我们可以通过使用th:fragment属性。
定义一个页面底部footer页面,在每一个需要的页面都可以用的模板,可以通过使用th:fragment属性
<div th:fragment="copy"> © 2014 The Good Thymes Virtual Grocery </div>
上面的代码定义了一个叫做副本的片段,我们可以很容易地包含在我们的主页上通过使用th:include
or th:replace属性
之一:
<body> ... <div th:include="footer :: copy"></div> </body>
引用片段没有th:fragment:
... <div id="copy-section"> © 2011 The Good Thymes Virtual Grocery </div> ...
页面引用:th:include="templatename::domselector"
1 | templatename是要引入页面的路劲加上去掉后缀的名称,例如footer.html页面建立在/WEB-INF/templates/footer.html,所以templatename为footer;domselector就是dom选择器,即为th:fragment中的值,或是选择id |
<body> ... <div th:include="footer :: #copy-section"></div> </body
注意:
1 2 3 4 5 6 7 8 9 10 | 带有公共的页面,不要带有 < html > < head ></ head > < body ></ body > </ html > 直接写内容: < div th:fragment="copy"> © 2011 The Good Thymes Virtual Grocery </ div > |
扩展写法,希望能灵活运用:
<div th:include="footer :: (${user.isAdmin}? #{footer.admin} : #{footer.normaluser})"></div>
二.可参数化的片段签名
可以像参数一样传入参数:
<div th:fragment="frag (onevar,twovar)"> <p th:text="${onevar} + ' - ' + ${twovar}">...</p> </div>
两种调用方式引入页面:
<div th:include="::frag (${value1},${value2})">...</div> <div th:include="::frag (onevar=${value1},twovar=${value2})">...</div>
如果没有带参数,如下形式:
<div th:fragment="frag"> ... </div>
依然可以使用带参数的引入,但是必须使用第二种引入方式,另一种不行:如下是正确的引入方式
<div th:include="::frag (onevar=${value1},twovar=${value2})">
这样事实上,这将是相当于一个th:include
和th:with的
组合
<div th:include="::frag" th:with="onevar=${value1},twovar=${value2}">
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· .NET中 泛型 + 依赖注入 的实现与应用