[Freemarker] 初识FreeMarker

来源:互联网 发布:嵌入式软件开发技术 编辑:程序博客网 时间:2024/06/07 03:05

内容

笔者学习网上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报错
    原因:页面中不能输出逻辑变量值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 &gt;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’) }