FreeMarker

  • 介绍

FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

官方网址:http://freemarker.org/

这里有一个可以在线测试FreeMaker的网站:http://freemarker-online.kenshoo.com/。大家在学习的时候,可以试试。

另外,还有一个模板引擎Velocity,也是非常出名的。

  • 插件

FreeMaker在几个常用的IDE中都有语法高亮提示的插件,具体怎么安装可以查考这里(http://freemarker.org/editors.html)

多说一句,如果没有语法高亮功能的编辑器,基本上就不能用,所以插件还是很有必要的。

  • HelloWorld

下面是一段利用FreeMarker的API生成一个XML文档的例子(其中的User类您可以自己写一个,只要有name和age属性即可):

下面是模板文件:

  • 变量

<#if parameters.runtimes??></#if> 这里是runtimes不为空的判断

<#if parameters.autostart!false></#if> 这里是当变量autostart为null或者不存在时给指定的默认值

<#if success><#elseif other></#if>

${options}.autostart = ${parameters.autostart?string("true", "false")}; 这里将autostart从布尔值变为字符串类型

  • 默认值

${phone?default('13912344321')} 如果phone为空,则显示默认值

  • 逻辑判断

<#if (!autostart?? || autostart!=true) && (!start?? || start!=true)></#if> 这是一个多层嵌套的逻辑判断,意思是autostart不存在或者值不为true,并且start不存储或者start的值不为true

  • 遍历list

集合长度判断

遍历map

  • 字符串

字符串替换${repo?replace("http://","")}

如果为null则显示空字符 ${userName!}

  • 宏 macro

这里的宏类似于函数的感念,可以重复调用。macro后的第一个字符串是宏名称(hanshuming),从第二个开始就是参数名了。在调用宏的时候,参数的顺序不做要求。

在定义宏的时候,可以给参数添加默认值,有默认值的参数在调用的时候可以不赋值:

<#macro print count other=12>

在宏定义里还可以使用嵌套,如下:

  • json

 

  • 使用手册

这里是官方的使用手册:http://freemarker.org/docs/index.html

  • 参考

FreeMaker百度百科

http://blog.sina.com.cn/s/blog_812a917c0100u0q8.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注