freeMarker 命名空间_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > freeMarker 命名空间

freeMarker 命名空间

 2015/3/1 9:13:07  pzw_0612  程序员俱乐部  我要评论(0)
  • 摘要:当运行FTL模板时,就会有使用assign和macro指令创建的变量的集合,像这样的变量集合被称为namespace命名空间。在简单的情况下可以只使用一个命名空间,称之为mainnamespace主命名空间。因为通常只使用本页上的命名空间,所以就没有意识到这点。如果想创建可以重复使用的宏,函数和其他变量的集合,通常用术语来说就是引用library库。使用多个命名空间是必然的。只要考虑你在一些项目中,或者想和他人共享使用的时候,你是否有一个很大的宏的集合。但要确保库中没有宏(或其他变量
  • 标签:

??? 当运行 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指令的区别

?

上一篇: 6、java反射机制与注解 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名