【问题标题】:Freemarker nested macrosFreemarker 嵌套宏
【发布时间】:2013-12-03 19:27:52
【问题描述】:

如何调用嵌套宏?

<@replaceA-sToB-s>
   <@replaceB-sToC-s Text/>
</@replaceA-sToB-s>

replaceB-sToC-s 简单地将任何“B”替换为“C” replaceA-sToB-s 简单地将任何“A”替换为“B”

【问题讨论】:

    标签: freemarker


    【解决方案1】:

    如果你想将replaceB-sToC-s 宏的结果传递给replaceA-sToB-s,那么你必须使用这样的东西:

    <#assign str><@replaceB-sToC-s "abc" /></#assign> 
    <@replaceA-sToB-s str />
    

    【讨论】:

    • 您不必在每个@replaceBsToCs 呼叫周围进行捕捉。相反,您可以在 @replaceAsToBs 中执行此操作。但请看我的回答。
    【解决方案2】:

    像这样:

    <#macro replaceAsToBs>
      <#local captured><#nested></#local>
      ${captured?replace('a', 'b')}<#t>
    </#macro>
    
    <#macro replaceBsToCs text>
      ${text?replace('b', 'c')}<#t>
    </#macro>
    

    #t-s 仅用于删除 ${...} 部分周围的多余空格。)然后您将其称为:

    <@replaceAsToBs>
       <@replaceBsToCs "abcd"/>
    </@replaceAsToBs>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-19
      • 2015-10-02
      • 1970-01-01
      • 2018-02-01
      • 2016-10-14
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多