freemarker的内部变量,特殊变量

特殊变量是由FreeMarker引擎自己定义的变量。要访问它们,你可以使用.variable_name语法。比如,你不能仅仅写version,而必须写.version。
支持的特殊变量有:
 data_model:你可以使用来直接访问数据模型的哈希表。也就是,你使用global指令定义在这里不可见的的变量。
 error(从FreeMarker 2.3.1版本开始可用):这个变量在recover指令体中可以访问,它存储了我们恢复错的错误信息。
 globals:你可以使用来访问全局可访问的变量的哈希表:数据模型和由global指令创建的变量。注意用assign或macro创建的变量不是全局的。因此当你使用globals时你不能隐藏变量。
 language:返回当前本地设置的语言部分的值。比如.locale是en_US,那么.lang是en。
 locale:返回当前本地设置的值。这是一个字符串,比如en_US。要获取关于本地化字符串值的更多内容,请参考setting指令。
 locales:你可以访问本地化变量的哈希表(由local指令创建的变量,还有宏的参数)。
 main:你可以用来访问主命名空间的哈希表。注意像数据模型中的全局变量通过这个哈希表是不可见的。
 namespace:你可以用来访问当前命名空间的哈希表。注意像数据模型中的全局变量通过这个哈希表是不可见的。
 node(由于历史原因重命名为current_node): 你可以用访问者模式(也就是用visit,recurse等指令)处理的当前节点。而且,当你使用FreeMarker XML的Ant 任务时,它初始存储根节点。
 output_encoding(从FreeMarker 2.3.1版本开始可用):返回当前输出字符集的名称。如果框架封装FreeMarker却没有为FreeMarker指定输出字符集时这个特殊变量是不存在的。(程序员可以阅读关于字符集问题的更多内容,在:程序开发指南/其他/字符集问题部分。)
 template_name:当前模板的名称(从FreeMarker 2.3.14版本开始可用)。
 url_escaping_charset(从FreeMarker 2.3.1版本开始可用):如果存在,它存储了应该用于URL转义的字符集的名称。如果这个变量不存在就意味着没有人指定URL编码应该使用什么样的字符集。这种情况下,url内建函数使用特殊变量output_encoding指定的字符集来进行URL编码。处理机制和它是相同的。(程序员可以阅读关于字符集问题的更多内容,在:程序开发指南/其他/字符集问题部分。)
 vars:表达式.vars.foo返回和表达式foo相同的变量。出于某些原因你不得不使用方括号语法时这是有用的,因为它只对哈希表子变量有用,所以你需要一个人工的父哈希表。比如,要读取有特殊名称的顶层变量可能会把FreeMarker弄糊涂,你可以写.vars["A strange name!"]。或者,使用和变量varName给定的动态名称访问顶层变量你可以写.vars[varName]。注意这个哈希表由.vars返回,并不支持?keys和?values。
 version:返回FreeMarker版本号的字符串形式,比如2.2.8。这可以用来检
查你的应用程序使用的是哪个版本的FreeMarker,但是要注意这个特殊变量在2.3-final或2.2.8版本之前不存在。非最终发行版本号包含缩写形式的“preview”,是“pre”(比如2.3pre6),或缩写形式的“release candidate”,是“rc”。

猜你喜欢

转载自liyixing1.iteye.com/blog/2299302
今日推荐