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 标记来进行多次定义。
比如这个会做上面两个例子中相同的事情

<#assignseq = ["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}!">

freemarker中local和assign标签区别相关推荐

  1. Spring中ref local与ref bean区别

    为什么80%的码农都做不了架构师?>>>    Spring中ref local与ref bean区别 今天在做SSH框架Demo实例时,在ApplicationResources. ...

  2. FreeMarker中assign指令的用法

    assign assign指令在前面已经使用了多次,它用于为该模板页面创建或替换一个顶层变量, assign指令的用法有多种,包含创建或替换一个顶层变量,或者创建或替换多个变量等, 它的最简单的语法如 ...

  3. html中dl标签和ul标签,html中dl,dt,dd,ul,li,ol标签区别和使用

    html中dl,dt,dd,ul,li,ol标签区别和使用 时间:2013-04-12 21:48 来源:未知 | 作者:易享学习网 | 本文已影响 人 ul: unordered lists ol: ...

  4. Verilog中 reg和wire 用法 以及always和assign的区别

    1.从仿真角度来说,HDL语言面对的是编译器,相当于使用软件思路,此时: wire对应于连续赋值,如assign: reg对应于过程赋值,如always,initial: 2.从综合角度,HDL语言面 ...

  5. 图片标签img中alt与title的区别

    可能很多新手在做站内优化的时候,不明白图片标签img中alt与title的区别,今天sem学院就单独为大家整理分享一下其中的区别. 大家可以一起动手来做测试:把以下代码保存的文本中,命名为.html结 ...

  6. struts2中s:select标签在freemarker中的使用

    作者:Yan 1.第一个例子: <s:select list="{'aa','bb','cc'}" theme="simple" headerKey=&q ...

  7. 如何在XML中注释掉一个标签块?

    如何在XML中注释掉一个标签块? 即我如何在下面的代码中注释掉<staticText>及其中的所有内容? <detail><band height="20&qu ...

  8. retain和copy还有assign的区别

    retain和copy还有assign的区别 1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a和b ...

  9. mysql id in set_mysql数据库中find_in_set()和in()用法区别

    mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...

最新文章

  1. 停用一些不必要的Windows服务
  2. yolov3剪枝 SlimYOLOv3
  3. 线性回归模型中的多重共线性--Multicollinearity
  4. 【Centos】修改系统字符集
  5. android炫酷动画代码,Android高级UI特效仿直播点赞动画效果
  6. postman测试带权限接口_接口测试工具:postman
  7. activiti5.9 mysql_Activiti5.9换成MySQL数据库
  8. 在使用apt-get update 时更行列表,显示[Connecting to archive.ubuntu.com (2001:67c:1360:8001::21)]超时
  9. CSS ::before 和 ::after 伪元素用法
  10. 新概念单片机c语言 pdf,新概念51单片机C语言教程实例代码(1).pdf
  11. 红黑树模拟软件_红黑树,超强动静图详解,简单易懂
  12. ‘mvn‘不是内部或外部命令
  13. phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)
  14. java导出用什么_Java导出Excel
  15. 百度搜索结果显示“我喜欢”按钮
  16. android 消息推送方法,一种基于Android系统的消息推送方法技术方案
  17. 银联在线支付5100030异常
  18. Kafka的 ISR 概念和作用
  19. 小朱学英语------day 3 Ne zha's success and a blast from the past
  20. Lottie系列一:介绍与使用

热门文章

  1. 对“佩戴低度数近视镜可延缓近视发展?”的一些疑问
  2. svg齿轮动画js特效
  3. C++ 将字符串转换为浮点数
  4. python小明爱跑步
  5. 北航计算机学院直博多少年,北航硕博连读需要几年
  6. PTA--基础编程题目集(7-10 计算工资) Python版
  7. 【UE Unreal Camera】【保姆级教程二】手把手教你通过UE获取摄像头帧数据
  8. 编程语言排行榜2021年3月
  9. 为什么工作上处处帮助别人,从来不主动为难人,不批评人,换来的却是同事的不尊重?
  10. 全国地区三级联动原理案例