FreeMarker学习之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:变量名。
  • =:赋值操作符。 它也可以是一个简写的赋值操作符(从 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}!">
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,422评论 11 349
  • FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1...
    年轻小伙程序员阅读 3,106评论 0 5
  • 那一天你穿起了白大褂 在夕阳和枫叶里旋转 我多么希望 坐着凝视着你 坚持一万小时 写首轰烈的小诗。
    留子尧阅读 398评论 0 8
  • 每次到这个纠结的时候,很没安全感,特别想逃,其实是我自己错了,也许是,应该是。对你发了火我不知道是愧疚感还是害怕从...
    hunny木子阅读 256评论 0 0