FreeMark是一套模板引擎,也就是一套用过提供==数据模型==和==HTML模板==生成动态页面的通用工具。html
--requestjava
--template + Freemark-dataService程序员
--HTML服务器
--response函数
既Freemark经过提供的==模板==+==数据模型==动态生成HTML界面返回给用户的一套引擎工具。他会在WEB服务器
响应response
用户请求request
的时候经过部署在WEB服务器上的模板动态的生成不一样的界面返回。这里的数据模型经常是java对象。工具
Freemark有一套本身的基础语法(大致上和HTML类似),经过基础语法能够迅速的生成不一样的界面。ui
在平常的开发中只要掌握简易的Freemark语法加上一点HTML基础就能迅速的入手开发。code
${......}:FreeMarker将会输出真实的值来替换大括号内的表达式,这样的表达式被称为interpolation(插值).htm
注解:注释和HTML的注释也很类似,可是它们使用<#-- and -->来标识。不像HTML注释那样,FTL注释不会出如今输出中(不出如今访问者的页面中),由于FreeMarker会跳过它们。对象
FTL标签:FreeMarker模板的语言标签。FTL标签和HTML标签有一些类似之处,可是它们是FreeMarker的指令,是不会在输出中打印的。这些标签的名字以==#==开头。
(用户自定义的FTL标签则须要使用@来代替#)
给出几个经常使用的指令,其他指令在开发须要时查询便可
<#if condition>... <#elseif condition2>... <#elseif condition3>... <#else>... </#if>
<#include>... </#include>
<#import "/lib/common.ftl" as com>
<#switch value> <#case refValue>...<#break> <#case refValue>...<#break> <#default>... </#switch>
<#list>... </#list>
就像是java中方法同样,内建函数一般为咱们开发WEB程序提供便利。它们并非数据模型中的东西,是FreeMarker在数值上添加的。为了清晰子变量是哪部分,==使用?代替==,.(点)来访问它们。
[x] html 若是在 <#list animals as animal> ... </#list> animal?index给出了在animals中基于0开始的animal的索引值 animal?counter也像index,可是给出的是基于1的索引值 animal?item_parity基于当前计数的奇偶性,给出字符串“odd”或“even”。在给不一样行着色时很是有用,好比: <td class="${animal?item_parity}Row">
内建函数多种多样,并不一一列举,只举出几个经常使用的
cap_first:使字符串第一个字母大写
lower_case:将字符串转换成小写
upper_case:将字符串转换成大写
trim:去掉字符串先后的空白字符
exists:判断对象是否是null
也能够直接${mouse?if_exists})
${openingTime?date} ${openingTime?date_time} ${openingTime?time}
输出布尔形 经常使用格式化日期 openingTime必须是Date型,详细查看freemarker文档 Reference->build-in referece->build-in for date
其他开发用到的时候在去查询便可,值得一提的是== 空值 ==
数据模型中常常会有可选的变量(有时并不存在)。除了一些人为缘由致使失误外,FreeMarker不能引用不存在的变量,除非明确地告诉它当变量不存在时如何处理,以下两种典型的处理方法:
<h1>Welcome ${user!"visitor"}!</h1>
这个例子,当user不存在于数据模型时,模板将会将user的值表示为字符串 “visitor”。(当 user 存在时,模板就会表现出 ${user} 的值)
! 空值的语法:
第一种用法不给缺失的变量指定默认值,代表默认值是空字符串,长度为0的集合,或者长度为0的Map对象.