freemarker include和macro的问题

发布于 2021-11-20 16:19:07 字数 693 浏览 813 评论 5

<body>
<#include "/head.ftl">
<#macro content>
  <#nested />
</#macro>
<#include "/foot.ftl">
</body>

这是一个模板base.ftl,一个头和一个脚,中间的内容用宏,把这个当做模板,然后我又建了一个index的页面,内容如下


<#include "/base.ftl" />
<@content>
  <div class="container">
    <#include "/list.ftl"><#include "/sidebar.ftl">
  </div>
</@content>

为什么freemarker返回的内容的顺序是:先head.ftl 然后foot.ftl 最后才是宏中的替换内容







如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

緦唸λ蓇 2021-11-25 16:25:51

实际上你的模版相当于

<body>
<#include "/head.ftl">
<#macro content>
  <#nested />
</#macro>
<#include "/foot.ftl">
</body>
<@content>
  <div class="container">
    <#include "/list.ftl"><#include "/sidebar.ftl">
  </div>
</@content>

这么看的话 就明了了,按照一楼的思路来

归属感 2021-11-25 15:55:13

追问一下,为什么不建议这么做

瑾夏年华 2021-11-25 14:19:28

回复
因为你的目的是做一个全局模板,而你index中的include base.ftl 完全破坏了原有的设计,还不如include head和foot,少一个base.ftl,别人开看的更清楚;

梦里兽 2021-11-23 18:55:44

回复
明白了,谢谢

毁梦 2021-11-21 20:45:32

base.ftl:

<#macro content>
  <body>
  <#include "/head.ftl">
  <#nested />
  <#include "/foot.ftl">
  <body>  
</#macro>

然后index这样写:

<#include "base.ftl" />
<@content>
  <div class="container">
    <#include "/list.ftl"><#include "/sidebar.ftl">
  </div>
</@content>

不过我不建议你这么做,还是老老实实include header和footer,不要什么base.ftl,想要实现layout功能请从后台代码入手

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文