指令描述:
使用该指令可以创建一个新的变量,或者替换一个已经存在的变量。
需要注意的是仅仅顶级的变量才可以替换或创建,不能替换或创建级联的变量。如可以替换或创建 a,但是不能替换或创建 a.b
指令使用:
seasons变量可以存储一个序列:
<#assign seasons = ["winter", "spring", "summer", "autumn"]> |
变量test中存储增长的数字:
<#assign test = test + 1> |
也可以使用一个assign指令来多次定义:
<#assign seasons = ["winter", "spring", "summer", "autumn"] test = test + 1 > |
使用中需要注意的地方:
不应该使用它来往字符串中插入变量:
<#assign x>Hello ${user}!</#assign> |
应该这么些:
<#assign x="Hello ${user}!"> |
了解:
命名空间中创建变量。如果你是用了in namespacehash,那么你可以用另外一个命名空间来创建/替换变量。比如,这里你在命名空间中/mylib.ftl创建/替换了变量bgColor
<#import "/mylib.ftl" as my> <#assign bgColor="red" in my> |
assign的极端使用是当它捕捉它的开始标记和结束标记中间生成的输出时。也就是说,在标记之间打印的东西将不会在页面上显示,但是会存储在变量中,如:
<#macro myMacro>foo</#macro> <#assign x> <#list 1..3 as n> ${n} <@myMacro /> </#list> </#assign> Number of words: ${x?word_list?size} ${x} |
将会打印:
Number of words: 6 1 foo 2 foo 3 foo |