使用可选的嵌套内容创建freemarker宏?

时间:2015-07-14 00:05:34

标签: freemarker

创建可以与嵌套内容一起使用或不使用嵌套内容的宏的正确方法是什么? e.g。

<@myMacro/>
<@myMacro>my nested content</@myMacro>

有类似的东西吗?或其他什么?

<#macro myMacro>
  <#if ??????>
    Before nested content
    <#nested/>
    After nested content
  <#else/>
    Nothing nested here
  </#if>
</#macro>

1 个答案:

答案 0 :(得分:3)

将嵌套内容分配给变量,然后检查此变量是否包含任何内容。然后将变量发送到输出,而不是使用另一个嵌套指令,以避免内容被处理两次。

<#macro myMacro>
    <#assign nested><#nested/></#assign>

    <#if nested?has_content>
        Before nested content
        ${nested}
        After nested content
    <#else/>
       Nothing nested here
    </#if>
</#macro>