java中Freemarker macro如何嵌套内容
java Freemarker中macro的宏可以有嵌套内容,<#nested>指令会执行宏调用指令开始和结束标记之间的模板片断。
macro嵌套内容例子
<#macro bodyheader> <h1><#nested></h1> </#macro>
//在开始标记和结束标记中填充嵌套内容 <@bodyheader>Hellow World</@bodyheader>
运行结果:
<h1><#nested></h1>
<#nested>指令可以被多次调用,每次都会执行相同的内容。
如果你使用了一个定义体中没有<#nested>嵌套指令的宏,而开始标记和结束标记中嵌套的又有内容,FreeMarker不会出现任何错误,但内容不会输出.
macro宏的局部变量并不满足可见嵌套
<#macro repeat count> <#local y = ‘test’> <#list 1.. count as x> ${y} ${count}/${x}:<#nested> </#list> </#macro> <@repeat count=3>${y!’N’} ${x!’N’} ${count!’N’}</@repeat>
运行结果:
test 3/1: N N N test 3/2: N N N test 3/3: N N N
可以看到y、x和count都是局部变量,不能宏的嵌套内容中调用,只能作用域单一一个宏,这样可以避免混乱.
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。