Freemarker嵌套宏

时间:2013-11-20 00:38:13

标签: freemarker

如何调用嵌套宏?

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

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

2 个答案:

答案 0 :(得分:3)

如果您想将replaceB-sToC-s宏的结果传递给replaceA-sToB-s,那么您必须使用以下内容:

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

答案 1 :(得分:3)

像这样:

<#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>