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. java注解,通过反射解析注解,模仿hibernate,获取sql语句。

    常用注解: 自定义注解,标准格式: 1,target:注解作用域 2,Retention:声明周期 运行子类继承,但是子类继承只能作用到类注解,字段注解,是继承不了的. 使用注解:通过下面这种方式,为 ...

  2. js加强小结

    一)回顾JavaScript基础 (1)函数的定义方式 *>>正常方式 function add(num1,num2){...} >>构造器方式 var add = new F ...

  3. ubuntu建立软ap共享无线网络

    建立ad-hoc模式共享网络 viewtopic.php?f=116&t=387194 有些android手机可能不支持ad-hoc模式,要第三方rom才行. 首先安装这些工具 代码: apt ...

  4. window.open()函数

    http://hi.baidu.com/gagahjt/blog/item/7b76e0dee61b20aecd11661c.html open函数详解: window.open("sUrl ...

  5. HTML5 学习笔记 应用程序缓存

    使用html5 通过创建cache manifest文件,可以轻松地创建web应用的离线版本. html5引入了应用程序缓存,这意味着web应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓 ...

  6. socket 的粘包问题解决方案

    粘包: 由于接受recv有最大限制,管道中有大于最大限制字节时, 第二次recv的会是之前残留的信息,这种现象叫做粘包. TCP协议是面向连接的,面向流的,当在发送数据时接受方不知道要收多少字节的数据 ...

  7. 构造矩阵解决这个问题 【nyoj299 Matrix Power Series】

    矩阵的又一个新使用方法,构造矩阵进行高速幂. 比方拿 nyoj299 Matrix Power Series 来说 给出这样一个递推式: S = A + A2 + A3 + - + Ak. 让你求s. ...

  8. 自己的一个验证电话和ecshop验证电话

    //验证电话 function checkPhone($phone) { $preg_mobile = preg_match("/^1\d{10}$/", $phone ); $p ...

  9. java后台分页实例一

    后台框架:jfinal + velocity.前台框架:jquery  页面 <!DOCTYPE html> <html> <head> <meta char ...

  10. **alon_MM DMA Interface for PCIe使用详解

    在所从事的项目中需要用到PCIE和DMA,经过再三研究,反复查看相关资料,终于弄懂了**alon_MM DMA Interface for PCIe的使用方法. PCIE在fpga和上位机之间起着中间 ...