`
huaxin803
  • 浏览: 108375 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FreeMarker模板包含及名称空间

 
阅读更多
摘要: FreeMarker模板包含及名称空间,主要是为了模板的重用。使用<#include>包含其他模板,如果包含多个模板,可能会出现同名变量被覆盖的问题。可以使用import来完成导入,并且加入名称空间

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原创,转载请注明出处


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics