FreeMarker模板包含及名称空间,主要是为了模板的重用。使用<#include>包含其他模板,如果包含多个模板,可能会出现同名变量被覆盖的问题。可以使用import来完成导入,并且加入名称空间
模板11.ftl包含/inc/inc1.ftl和/inc/inc2.ftl
inc1.ftl:
<#assign username="张三">
<#macro test> hello world <#macro> |
/inc/inc2.ftl:
<#assign username="李四"> |
11.ftl的模板及输出:
<#include style="color:black"> <#include style="color:black"> ${username} |
李四 |
从上面的例子中可以看出使用incldue会出现同名变量被覆盖的问题,可以使用import来完成导入,并且加入名称空间(名称空间其实就是给引入的模板起一个名称)
<#import style="color:black"> <#import style="color:black"> ${inc2.username} ${inc1.username} |
李四 张三 |
在11.ftl中,也可在定义模板变量时指定其所属的名称空间(inc2或inc1,不能凭空捏造),且此时就必须使用"名称空间.变量名"的方法访问了
<#--<>将一个变量定义到名称空间中--> <#assign age="12"> ${inc2.age} |
12 |
访问名称空间中的自定义指令
在inc1.ftl中有一个自定义的指令test,访问方式如下:
<#--<>访问名称空间中的自定义指令--> <@inc1.test> |
hello world |
本文链接:FreeMarker模板包含及名称空间,本文由huangyineng原创,转载请注明出处