码迷,mamicode.com
首页 > 其他好文 > 详细

FreeMarker基本语法

时间:2014-05-21 08:40:40      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:模板引擎   freemarker   

FreeMarker单独使用的几率比较小,但是它的语法的确简单,用起来比较方便,这次整理了点这方面的资料拿出来分享

1.普通的变量

这是最简单的情况,直接${变量名称} ,如${name}

需要注意的是有的变量是需要转义的如双引号

2.遍历List集合

这个是用的最多的,必须掌握

<#list ["克里斯埃文斯", "斯嘉丽约翰逊", "小罗伯特唐尼"]  as x>
${x}
</#list>
此外,迭代集合对象时,还包含两个特殊的循环变量:
item_index:当前变量的索引值
item_has_next:是否存在下一个对象
也可以使用<#break>指令跳出迭代


这里会逐个输出演员的名称


3.遍历单独的map集合

<#list map?keys as key>
      ${key}=${map[key]}<br />
</#list>

这个不是很好记,但是用的几率也不小

4.算术运算符

FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:+, - , * , / , %

5.比较运算符

表达式中支持的比较运算符有如下几个:
1,=或者==:判断两个值是否相等.
2,!=:判断两个值是否不等.
3,>或者gt:判断左边值是否大于右边值
4,>=或者gte:判断左边值是否大于等于右边值
5,<或者lt:判断左边值是否小于右边值
6,<=或者lte:判断左边值是否小于等于右边值

注意:=和!=可以用于字符串,数值和日期来比较是否相等,但=和!=两边必须是相同类型的值,否则会产生错误,而且FreeMarker是精确比较,"x","x ","X"是不等的.其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替>会有更好的效果,因为FreeMarker会把>解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:<#if (x>y)>

6.逻辑运算符

和普通程序一样,freemarker也有&&,|| ,!三种

7.if的使用

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

<#if condition>...
<#elseif condition>...
<#elseif condition>...
<#else> ...
</#if>

8 include指令

include指令的作用类似于JSP的包含指令,用于包含指定页.include指令的语法格式如下:
<#include filename [options]>
在上面的语法格式中,两个参数的解释如下:
filename:该参数指定被包含的模板文件
options:该参数可以省略,指定包含时的选项,包含encoding和parse两个选项,其中encoding指定包含页面时所用的解码集,而parse指定被包含文件是否作为FTL文件来解析,如果省略了parse选项值,则该选项默认是true.

9 import指令

该指令用于导入FreeMarker模板中的所有变量,并将该变量放置在指定的Map对象中,import指令的语法格式如下:
<#import "/lib/common.ftl" as com>
上面的代码将导入/lib/common.ftl模板文件中的所有变量,交将这些变量放置在一个名为com的Map对象中.

10.变量的声明

<#assign num=0/>

11 macro的使用

这个可以用来实现自定义指令,一般用来做公共组件,例如分页条

最后说下list中含有map的遍历,这种情况可以使用点语法或方括号语法.假如有下面的数据模型:
Map root = new HashMap();
Book book = new Book();
Author author = new Author();
author.setName("annlee");
author.setAddress("gz");
book.setName("struts2");
book.setAuthor(author);
root.put("info","struts");
root.put("book", book);

为了访问数据模型中名为struts2的书的作者的名字,可以使用如下语法:
book.author.name    //全部使用点语法
book["author"].name
book.author["name"]    //混合使用点语法和方括号语法
book["author"]["name"]   //全部使用方括号语法


另外freemarker也注意空值的处理,具体的可以参考这篇

http://www.cnblogs.com/liugang/archive/2012/10/19/2730340.html


FreeMarker基本语法,布布扣,bubuko.com

FreeMarker基本语法

标签:模板引擎   freemarker   

原文地址:http://blog.csdn.net/walkcode/article/details/26393211

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!