Freemarker 嵌套宏
Posted
技术标签:
【中文标题】Freemarker 嵌套宏【英文标题】:Freemarker nested macros 【发布时间】: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”
【问题讨论】:
【参考方案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>
【讨论】:
以上是关于Freemarker 嵌套宏的主要内容,如果未能解决你的问题,请参考以下文章