freemarker中local和assign标签区别

local

概要

<#local name=value>
或
<#local name1=value1 name2=value2 ... nameN=valueN>
或
<#local name>
  capture this
</#local>

  • name: 在root中局部对象的名称。它不是一个表达式。但它可以被写作是字符串形式, 如果变量名包含保留字符,这是很有用的,比如 <#local “foo-bar” = 1>。 请注意,这个字符串没有扩展插值(如"${foo}")
  • =:赋值操作符,也可以简写的赋值操作符之一 (++,+= 等…),和 the assign 指令 相似。
  • value: 存储的值,是表达式。

它和 assign 指令 类似,但是它创建或替换局部变量。 这仅仅在宏和方法的内部定义才会有作用。要获得更多关于变量的信息,可以阅读:模板开发指南/其它/在模板中定义变量

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:变量的名字。 它不是表达式。而它可以写作是字符串,如果变量名包含保留字符这是很有用的, 比如 <#assign “foo-bar” = 1>。 请注意这个字符串没有展开插值(如"${foo}"); 如果需要赋值一个动态创建的名字,那么不得不使用 这个技巧。
  • =:赋值操作符。 它也可以是一个简写的赋值操作符(从 FreeMarker 2.3.23 版本开始): ++,–, +=,-=, *=,/= 或 %=。比如 <#assign x++> 和 <#assign x = x + 1> 是一样的,并且 <#assign x += 2> 和 <#assign x = x + 2> 是相同的。 请注意, ++ 通常意味着算术加法 (对于非数字将会失败),不像 + 或 += 可以进行字符连接等重载操作
  • value: 存储的值。是表达式
  • namespacehash:(通过 import) 为命名空间创建的哈希表。是表达式

描述
使用该指令你可以创建一个新的变量, 或者替换一个已经存在的变量。注意仅仅顶级变量可以被创建/替换 (也就是说你不能创建/替换 some_hash.subvar, 除了 some_hash)

assign应用:
1.变量 seq 存储一个序列

<#assign seq = ["foo", "bar", "baz"]>

2.变量 x 中存储增长的数字

<#assign x++>

3.作为一个方便的特性,你可以使用一个 assign 标记来进行多次定义。
比如这个会做上面两个例子中相同的事情

<#assign
  seq = ["foo", "bar", "baz"]
  x++
>

4.assign 指令在命名空间中创建变量。
通常它在当前的命名空间 (也就是和标签所在模板关联的命名空间)中创建变量。
但如果你是用了 in namespacehash,
那么你可以用另外一个 命名空间 来创建/替换变量。
比如,这里你在命名空间中 /mylib.ftl 创建/替换了变量 bgColor

<#import "/mylib.ftl" as my>
<#assign bgColor="red" in my>

5.assign 的极端使用是当它捕捉它的开始标记和结束标记中间生成的输出时。
也就是说,在标记之间打印的东西将不会在页面上显示, 但是会存储在变量中

<#macro myMacro>foo</#macro>
<#assign x>
  <#list 1..3 as n>
    ${n} <@myMacro />
  </#list>
</#assign>
Number of words: ${x?word_list?size}
${x}
请注意,你不应该使用它来往字符串中插入变量:

<#assign x>Hello ${user}!</#assign> <#-- BAD PRACTICE! -->

你可以这么来写:

<#assign x="Hello ${user}!">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值