[Freemarker] 初识FreeMarker

本文介绍了Freemarker模板引擎的基本概念及使用方法,包括如何处理变量、日期、逻辑判断等内容,并提供了丰富的示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容

笔者学习网上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’) }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geodoer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值