使用 #macro 和 #nested 的 FreeMarker 排序行

FreeMarker ordering lines with #macro and #nested

我正在尝试创建一个宏来按字母顺序排列一段行:

<#order_lines>
import B
import A
</#order_lines>

这应该输出

import A
import B

我尝试实现的方式:

<#macro order_lines>
${myUtil.orderLines(<#nested>)}
</#macro>

宏有问题; “<#nested>”处的语法错误

Encountered "<", but was expecting one of: ...

您可以将其分配给一个变量:

<#macro order_lines>
<#local x><#nested></#local>
${myUtil.orderLines(x)}
</#macro>

另一种选择是实施 TemplateDirectiveModel 并像使用宏一样使用它。