有没有办法在Apache Freemarker中定义可选宏?

时间:2018-12-21 02:48:16

标签: apache freemarker

使用宏进行继承的页面布局设计。我的主要网页布局看起来像这样

mainlayout.ftl

<div>
   <@head/>
   <@body/>
</div>

现在包含mainlayout.ftl的页面看起来像这样,并可能提供head宏

page1.ftl

<#include "/mainlayout.ftl"/>
<#macro body>
 ...........
</#macro>

由于maylayout.ftl需要@head宏,因此在页面呈现期间会引发错误。

有没有办法使@head宏为可选?

1 个答案:

答案 0 :(得分:0)

在mainlayout.ftl中定义一个空头宏,您将必须在page1.ftl中对其进行定义。

mainlayout.ftl

<#macro head></#macro>

<div>
   <@head/>
   <@body/>
</div>

page1.ftl

<#include "/mainlayout.ftl"/>
<#macro body>
 ...........
</#macro>