在模板文件中定义变量

模板可以使用在数据模型中定义的变量。在数据模型之外,模板本身也可以定义变量来使用。这些临时变量可以适应FTL指令来创建和替换。要注意每一次模板执行时都维护它自己的这些变量的私有设置,这些变量是在页面用以呈现信息的。变量的初始值是空,当模板执行结束这些变量便被销毁了。

你可以访问一个在模板里定义的变量,就像是访问数据模型根上的变量一样。这个变量比定义在数据模型中的同名参数有更高的优先级,那就是说,如果你恰巧定义了一个名为”foo”的变量,而在数据模型中也有一个名为”foo”的变量,那么模板中的变量就会将数据模型根上的变量隐藏。


在模板中可以定义三种类型的变量

  • 简单变量:它能从模板中的任何位置来访问,或者从使用include指令引入的模板访问。可以使用 assign 或 macro 指令来创建或替换这些变量。
  • 局部变量:它们只能被设置在宏定义体内,而且只在宏内可见。一个局部变量的生存周期只是宏的调用过程。可以使用local指令在宏定义体内创建或替换局部变量。
  • 循环变量:循环变量是由指令(如list)自动创建的,而且它们只在指令的开始和结束标记内有效。宏的参数是局部变量而不是循环变量。

例如:


<#assign x = 1> <#-- 创建变量 x -->
${x}
<#assign x = x + 3> <#-- 替换变量 x -->
${x}



输出为:


1
4




有时会发生一个变量隐藏数据模型中的同名变量,但是如果想访问数据模型中的变量,就可以使用特殊变量globals

例如,假设我们在数据模型中有一个名为user,值为”Big Joe”的变量:


<#assign user = "Joe Hider">
${user} <#-- 打印: Joe Hider -->
${.globals.user} <#-- 打印: Big Joe -->

(特殊变量的使用方法参见文档)