freeMarker 命名空间

    当运行 FTL 模板时,就会有使用 assign 和 macro 指令创建的变量的集合,像这样的变量集合被称为 namespace 命名空间。在简
单的情况下可以只使用一个命名空间,称之为 main namespace 主命名空间。
    因为通常只使用本页上的命名空间,所以就没有意识到这点。如果想创建可以重复使用的宏,函数和其他变量的集合,通常用术语来说就是引用
library 库。 使用多个命名空间是必然的。只要考虑你在一些项目中,或者想和他人共享使用的时候,你是否有一个很大的宏的集合。 但要确保库中没有宏(或其他变量)名和数据模型中变量同名,而且也不能和模板中引用其他库中的变量同名。 通常来说,变量因为名称冲突也会相互冲突。所以要为每个库中的变量使用不同的命名空间。 废话少说,直奔主题。

 

     为解决这些问题,freeMarker 中有一个内置的import 指令, 不同library 库具有不同的命名空间,以保证相同变量在不同空间上,就有不同的值。

 

比如:namespace_val.ftl 模板 的变量 mail

 

namespace_val.ftl

 

<#macro copyright date>

<p>Copyright (C) ${date} Julia Smith. All rights reserved.
<br>Email: ${mail}</p>
</#macro>
<#assign mail = "jsmith@acme.com">

 

 

namespace_val_cal.ftl

 

<#-- <#import "namespace_val.ftl" as my> -->
<#import "namespace_val.ftl" as my>
<#assign mail="fred@acme.com">
<@my.copyright date="1999-2002"/>
${my.mail}
${mail}

   

   这两个文件中的 mail 变量,由于使用不同的命名空间,以至于不会相互的赋值。

 

另外,需要注意的是,import指令和include指令的区别

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值