内容
笔者学习网上SpringMVC Demo时接触到.flt,这是笔者初步了解后的笔记
学习路线:
1) 博客:http://blog.csdn.net/fhx007/article/details/7902040/
2) 慕课网:http://www.imooc.com/learn/801
简介
Freemarker不算Web框架,是基于Java编写的模板引擎,是视图的一个组件,便于编程人员更好的在View层(MVC模型)显示后端数据
.flt(Freemarker Template Language)是Freemarker模板的文件后缀名
Freemarker官网:http://freemarker.org
简单语法
${varName}
取值插入
${name}
取变量name的值插入该位置(通过ModelAndView传值)!
取空值或变量不存在问题
${varName!}
变量为空或不存在则不输出任何东西
${varName!'我是默认值'}
空或不存在输出 我是默认值?
后接函数等操作
${date?string("yyyy-MM-dd")}
对date变量转换格式后输出<#assign a=100 />
定义变量<@... >
@表示自定义指令<#-- -->
注释文本
直接输出
具体用法
取值
逻辑变量
${booleanVar}
直接输出页面报错
原因:页面中不能输出逻辑变量值true,false
解决方案:
1) freemarker配置文件中设置格式化标签<prop key="boolean_format">yes,no</prop>
2) 使用时转格式
${booleanVar?string('yes','no')}
取日期
Freemarker中只与Java.sql.Date类型的日期做映射,无法输出Java.util.Date类型的日期<#-- Java.util.Date类型需转义 --> ${dateVar?string('yyyy-MM-dd HH:mm:ss')} <#-- Java.sql.Date类型直接用 --> ${dateVar}
取到空值 或 变量不存在
${nullVar}
取到空值页面报错
${missing}
missing没有定义(不存在)${var!} <#-- null或mssing则不输出任何东西 --> ${var!'默认值'} <#-- null或mssing输出 默认值-->
输出HTML代码${var?html}
${"<font color='blue'>我是html代码</font>"?html}
页面显示为:
<font color='blue'>我是html代码</font>
遍历List
userList为通过ModelAndView传过来的java对象 List<User> userList<ul> <#list userList as item> <li>${item.name},的年龄是:${item.age}</li> </#list> </ul>
异常处理:
${ userObj.name !} <#-- 只能判断name是否异常 --> ${ (userObj.name)! } <#-- 判断userObj是否异常-->
遍历Map
<ul> <li>集合Map</li> <#list map?key as key> <font color="blue">${key}:${map[key]}</font><br/> </#list> </ul>
逻辑语句
If语句
<#if var >99> var 大于 00 <#elseif var==99> var 等于 00 <#else> var 小于 00 </#if> <#-- 其他判断形式 --> <#if myList??> ?是否存在或为空值 <#if myList?exists> 是否存在
Switch语句
<#switch var> <#case 10> 10<br/> <#break> <#case 100> 100</br> <#default> other </#switch>
对字符串操作
连接 ${a+b}
截取 ${ (a+b)?substring(5,8) } 只取头,不取尾
长度 ${ (a+b)?length }
大写 ${ (a+b)?upper_case }
小写 ${ (a+b)?lower_case }
首次出现位置 ${ (a+b)?index_of(‘w’) }
替换 ${ (a+b)?replace(‘w’,’s’) }
最后一次出现的位置 ${ (a+b)?last_index_of(‘o’) }