assign  用于为该模板页面 创建或替换一个顶层变量 或创建或替换多个顶层变量 列子如下

<#assign name=value [in namespacehash]>,指定一个名为name的变量,变量值为value, in子句用于将创建的name变量放入namespacehash命名空间中

<#assign name[in namespacehash]>capture this</#assign>

<#assign x>

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"]as n>

${n}

</#list>

</#assign>

${x}  输出:星期一 星期二 星期三 星期四 星期五 星期六 星期天

macro 用户自定义指令 用@符号调用 列子如下

<#macro greet>

  <font size="+2">Hello Joe!</font>

</#macro>

使用:<@greet></greet>或<@greet/>

结果:<font size="+2">Hello Joe!</font>

参数-在macro指令中可以在宏变量之后定义参数  
例二:  
<#macro greet person>  
<font size="+2">Hello ${person}!</font>  
</#macro>  
使用:<@greet person="Fred"/> and <@greet person="Batman"/>  
结果: <font size="+2">Hello Fred!</font> and <font size="+2">Hello Batman!</font>

......

${..}只能用于文本部分,不能用于表达式

错误示范: <#if ${isA}>A</#if> 或 <#if "${isA}">A</#if>

应该写成: <#if  isA>A</#if>

Map链接运算符

Map对象的连接运算符也是将两个Map对象连接成一个新的Map对象,Map对象的连接运算符是+,如果两个Map对象具有相同的key,则右边的值替代左边的值.看如下的例子如下: 
<#assign scores = {"语文":86,"数学":78} + {"数学":87,"Java":93}> 
语文成绩是${scores.语文} 
数学成绩是${scores.数学} 
Java成绩是${scores.Java} 
输出结果是: 
语文成绩是86 
数学成绩是87 
Java成绩是93

if指令

这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: 
<#if condition>... 
<#elseif condition>... 
<#elseif condition>... 
<#else> ... 
</#if>

例子如下: 
<#assign age=23> 
<#if (age>60)>老年人 
<#elseif (age>40)>中年人 
<#elseif (age>20)>青年人 
<#else> 少年人 
</#if> 
输出结果是:青年人

由于FreeMarker会将>符号当成标签的结束字符,可能导致程序出错,为了避免错,使用括号(age>60)

switch,case,default,break指令

这些指令虽然是分支指令,作用类似于Java的switch语句

switch指令的语法结构

<#switch value>

<#case refValue>...</#break>

<#case refValue>...</#break>

<#default>...

</#switch>

list, break指令

list指令是一个迭代输出指令,用于迭代输出数据模型中的集合,list指令的语法格式如下:

<#list sequence as item> ... 
</#list>

sequence是一个集合对象,也可以是返回一个集合对象的表达式,item是一个任意的名字,指被迭代输出的集合元素,迭代集合对象时,还包含两个特殊的循环变量:

item_index:当前变量的索引值

item_has_next:是否存在下一个对象

也可以使用<#break>指令跳出迭代

例子如下:

<#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as x>

${x_index+1}.${x}

<#if x_has_next>,</if>

<#if x="星期四"><#break></#if>

</#list>

freemarker0的更多相关文章

随机推荐

  1. ubuntu 14.04为/检查磁盘时发生严重错误的解决方法

    http://jingyan.baidu.com/article/0aa22375bbffbe88cc0d6419.html

  2. C++ bool和string转换

    直接贴代码吧.用g++能够编译.測试ok #include <iostream> #include <sstream> using namespace std; int mai ...

  3. spring mvc 返回json的配置

    转载自:http://my.oschina.net/haopeng/blog/324934 springMVC-servlet.xml 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  4. 创建你的第一个Android PHP应用

    google的开源移动操作系统Android给智能手机市场带来了风暴.不像Apple,对想要为水果市场(Iphone App Store)提供应用软件的开发者们有着严格的指导原则以及要求,Google ...

  5. 移动UI设计中需要避免的四种常见用户体验误区

    2012年移动应用的下载量超过300 亿,可是智能手机用户平均每周会使用的应用数却大概只有15个.更糟的是,Localytics 的研究表明,大概有22%的应用是见光死,用过一次之后就被束之高阁.既然 ...

  6. Content Editor Webpart(一)引用JQuery

    SharePoint里面自带了一个Content Editor Webpart, 使用这个webpart.能够方便的往页面上加入随意的内容(HTML,css, JS).以此来达到往页面加入自己定义内容 ...

  7. ubuntu环境下配置jdk

    方法1:修改/etc/profile 文件 /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 所有用户 ...

  8. ARM开发工具软件命令具体解释---嵌入式回归第三篇

    先从bootloader開始,由于临时眼下这些都会是裸机程序相关. 本人这里是VMwarm10.0上安装的红帽linux虚拟机.从以下的截图中能够看出 裸机开发流程: 这里先做第三步(第一步第二步已提 ...

  9. [Jobdu] 题目1348:数组中的逆序对

    题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组 ...

  10. Linux下使用DD命令测试磁盘读写速度

    dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,所以可以用来测试硬盘的读写能力~ 几种常见的DD命令,先看一下区别~ dd bs=6 ...