FreeMarker学习之assign指令
2019-01-15 本文已影响8人
邪人君子
assign指令
使用方法
<#assign name1=value1 name2=value2 ... nameN=valueN>
或
<#assign same as above... in namespacehash>
或
<#assign name>
capture this
</#assign>
或
<#assign name in namespacehash>
capture this
</#assign>
-
name
:变量名。 -
=
:赋值操作符。 它也可以是一个简写的赋值操作符(从 FreeMarker 2.3.23 版本开始):++
,--
,+=
,-=
,*=
,/=
或%=
。比如<#assign x++>
和<#assign x = x + 1>
是一样的,并且<#assign x += 2>
和<#assign x = x + 2>
是相同的。 请注意,++
通常意味着算术加法 (对于非数字将会失败),不像+
或+=
可以进行字符连接等重载操作。 -
value
: 存储的值。是表达式。 -
namespacehash
:(通过 [import
] 为命名空间创建的哈希表。是表达式。
举例
- 1、定义简单类型
<#assign name="李四">
姓名:${name}
- 2、定义对象类型
<#assign info={"name":"张三","address":"上海"}>
姓名:${info.name}
地址:${info.address}
描述
使用该指令你可以创建一个新的变量, 或者替换一个已经存在的变量。
比如:变量 seq
存储一个序列:
<#assign seq = ["foo", "bar", "baz"]>
比如:变量 x
中存储增长的数字:
<#assign x++>
可以使用一个 assign
标记来定义定义多个变量
<#assign
seq = ["foo", "bar", "baz"]
x++
>
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
不可以使用它来往字符串中插入变量:
<#assign x>Hello ${user}!</#assign> <#-- 错误 -->
你可以这么来写:
<#assign x="Hello ${user}!">