核心提示:初识FreeMarkerFreemarker不算Web框架,是基于Java编写的模板引擎,是视图的一个组件,便于编程人员更好的在View层(MVC模型)显示后端数据。.flt(Freemarker T...
初识FreeMarker
Freemarker不算Web框架,是基于Java编写的模板引擎,是视图的一个组件,便于编程人员更好的在View层(MVC模型)显示后端数据。
.flt(Freemarker Template Language)是Freemarker模板的文件后缀名
Freemarker官网:https://freemarker.org
简单语法
${varName} 取值插入${name} 取变量name的值插入该位置(通过ModelAndView传值) ! 取空值或变量不存在问题
${varName!}变量为空或不存在则不输出任何东西
${varName!'我是默认值'} 空或不存在输出 我是默认值 ? 后接函数等操作
${date?string("yyyy-MM-dd")}对date变量转换格式后输出 <#assign a=100 /> 定义变量 <@... > @表示自定义指令 <#-- --> 注释 文本 直接输出
具体用法
取值
逻辑变量
${booleanVar}直接输出页面报错
原因:页面中不能输出逻辑变量值true,false
解决方案:
1) freemarker配置文件中设置格式化标签
yes,no
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}
${"我是html代码"?html}
页面显示为:我是html代码
遍历List
userList为通过ModelAndView传过来的java对象 List
- <#list userList as item>
- ${item.name},的年龄是:${item.age}
异常处理:
${ userObj.name !} <#-- 只能判断name是否异常 --> ${ (userObj.name)! } <#-- 判断userObj是否异常-->
遍历Map
- 集合Map
- <#list map?key as key> ${key}:${map[key]}
逻辑语句
If语句
<#if var >99> var 大于 00 <#elseif var==99> var 等于 00 <#else> var 小于 00 <#-- 其他判断形式 --> <#if myList??> ?是否存在或为空值 <#if myList?exists> 是否存在
Switch语句
<#switch var> <#case 10> 10 <#break> <#case 100> 100 <#default> other
对字符串操作
连接 ${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’) }