FreeMarker模板包含及名称空间,主要是为了模板的重用。使用<#include>包含其他模板,如果包含多个模板,可能会出现同名变量被覆盖的问题。可以使用import来完成导入,并且加入名称空间
模板11.ftl包含/inc/inc1.ftl和/inc/inc2.ftl
inc1.ftl:
| <#assign username="张三">
<#macro test> hello world <#macro> |
/inc/inc2.ftl:
| <#assignusername="李四"> |
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原创,转载请注明出处
本文介绍FreeMarker模板引擎中的模板包含与命名空间的概念及其应用。通过使用<#include>和<#import>指令实现模板重用,并解决变量冲突问题。文章还演示了如何为模板变量指定名称空间。
541

被折叠的 条评论
为什么被折叠?



