具有少量嵌套元素的Freemarker宏

时间:2012-10-29 11:25:22

标签: macros freemarker

如何在宏中添加几个不同的 #nested 元素?

1 个答案:

答案 0 :(得分:18)

您无法在宏中使用不同的 #nested 元素,每次使用它都会输出相同的文字。

如果您的目标是在宏中包含多个变量部分,则可以使用 #assign 元素。

允许定义正文,页眉和页脚内容的页面 #macro 示例:

<#macro pageTemplate header="" footer="">
    ${header}
    <#nested >
    ${footer}
</#macro>

然后,您可以使用 #assign 元素定义每个部分(但无可否认,多个名为 #nested 的元素会更好)。

<#assign headerContent>
     This is the header.
</#assign>
<#assign footerContent>
     This is the footer.
</#assign>
<@pageTemplate header=headerContent footer=footerContent>
     This is the nested content.
</@pageTemplate>

结果输出为:

This is the header.
This is the nested content.
This is the footer.