创建可以使用或不使用嵌套内容的宏的正确方法是什么?例如

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

有这样的吗?或者是其他东西?
<#macro myMacro>
  <#if ??????>
    Before nested content
    <#nested/>
    After nested content
  <#else/>
    Nothing nested here
  </#if>
</#macro>

最佳答案

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

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

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

关于freemarker - 创建带有可选嵌套内容的 freemarker 宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31395508/

10-13 09:28