FreeMarker 基本指令 if list assign i
2019-02-25 本文已影响0人
左手气球右手书
FTL 标签 (FreeMarker Template Language, FreeMarker模板的语言标签),也被成为指令。
if 指令
<#if condition>
...
</#if>
<#if condition>
<#else>
...
</#if>
<#if condition>
...
<#elseif condition>
...
<#else>
...
</#if>
list 指令
list指令的一般格式为: <#list sequence as loopVariable>repeatThis</#list>。
repeatThis 部分将会在给定的 sequence 遍历时在每一项中重复, 从第一项开始,一个接着一个。
在所有的重复中, loopVariable 将持有当前遍历项的值。 这个变量仅存在于 <#list ...> 和 </#list> 标签内。
<#list misc.fruits as fruit>
<ul>
<li>${fruit}</li>
</ul>
</#list>
等同
<#list misc.fruits>
<ul>
<#item fruit>
<li>${fruit}</li>
</#fruit>
</ul>
</#list>
ist指令中<#sep></#sep>,存在下一项时执行,即遍历到数组的最后一项时将不会执行。
以上指令(list, items, sep, else)可以联合起来使用:
<#list misc.fruits>
<p>Fruits:
<ul>
<#items as fruit>
<li>${fruit}<#sep> and</#sep>
</#items>
</ul>
<#else>
<p>We have no fruits.
</#list>
assign 指令
assign 指令可以 创建一个新的变量, 或者替换一个已经存在的变量。注意仅仅顶级变量可以被创建/替换 (也就是说你不能创建/替换 some_hash.subvar)。
assign 指令在命名空间中创建变量。通常它在当前的命名空间 (也就是和标签所在模板关联的命名空间)中创建变量。但如果你是用了 in namespacehash, 那么你可以用另外一个 命名空间 来创建/替换变量。
语法:<#assign name1=value1 name2=value2 ... nameN=valueN>
变量得创建可以是一个简写的赋值操作符(从 FreeMarker 2.3.23 版本开始): ++,--, +=,-=, *=,/= 或 %=。比如: <#assign x++> 和 <#assign x = x + 1> 是一样的,并且 <#assign x += 2> 和 <#assign x = x + 2> 是相同的。 请注意, ++ 通常意味着算术加法 (对于非数字将会失败),不像 + 或 += 可以进行字符连接等重载操作。
<#assign seq = ["foo", "bar", "baz"] x++ >
include 指令
include 指令在模板中插入其他文件的内容
<#include "/copyright_footer.html">