手册写的不错,忘记的时候可以翻翻n(*≧▽≦*)n

--------------------------------------------分割线--------------------------------------------

  1.插值--通用

 <div>${expr}</div>

  2.插值结合运算符

    为了处理缺失变量,FreeMarker提供了两个运算符: (用于防止对象不存在而导致的异常报错 )

    ! : 指定缺失变量的默认值

    ?? : 判断某个变量是否存在,返回boolean值

    比如:

 <#if item??>
<div>${item}</div>
</#if>

    又或者:

     <#if (item.name)??>
<div>${item.name!'admin'}</div>
</#if>

    特别提示:

     <#if (item.name)??></#if> 与 <#if item.name??></#if>是不一样的哦,前者判断item和name是否为空,而后者指判断name是否为空!

  3.内置函数   

      html :字符串中所有的特殊 HTML 字符都需要用实体引用来代替(比如 < 代替 &lt; )
      trim :去掉字符串前后的空白字符
      size : 序列(seqlist)中元素的个数
      string :指定格式,常用日期
      例子:

 ${item.date?string('yyyy-MM-dd HH:mm:ss')} //日期格式
${item?string.number} //数字格式
${item.money!?string("0.00")} 元 //金钱格式

      ?html 用于将字符串中可能包含的html字符,进行过滤.

  4.对象的使用  

    obj.Map()
    使用{}包住,以成对的键值存在;
    可以混合使用.和[""],例如item.stu['name'];

  5.逻辑判断    

    <#if condition>...     

    <#elseif condition2>...
    <#else>...

  6.列表循环

     <#list items as item>
${item}
</#list>

    item_index为当前变量的索引值,从0开始
    item_has_next是否存在下一个对象(来辨别当前项是否是序列的最后一项的布尔值)

    手册示例:

 <#assign seqlist=["spring","summer","autumn","winner"]>;
<#list seqlist as item>
${item_index + 1}.${item} <#if item_has_next>,</#if>
</#list>

    结果是按数组顺序输出!

  7.assign指令创建

    <#assign num=1 > (创建变量num)
    <#assign num=num+1 > (替换变量num)
    可以在任何地方使用访问

  8.空值(或不存在)变量的判断     

    <#if item.name??></#if> (询问变量是否存在)
    ${user!"Anonymous"} 或者 ${user!}(指定默认)

    特别注意几点:
    FreeMarker模板语言没有null关键字,所以不能判断变量是否为Null;
    FreeMarker 不能容忍引用不存在的变量,除非明确地告诉它当变量不存在时如何处理;
    不存在的变量和一个值为null的变量,是一样的。

  9.特殊字符

         \r 回车
\n 换行
\" 双引号
\' 单引号
\t Tab
\b 退格键
\\ 反斜杠
注意**
> gt
>= gte
< lt
<= lte

  10.include 导入其他页面

<#include "../header.html" />

    插入另外一个指定路径的 FreeMarker 模板文件,输出格式是在include标签出现的地方插入;

    区分:

<@include_page path="../header.html"/> 

      会开始一个独立的 HTTP 请求处理,一般不用;

    JSP写法:

<jsp:include page="path/to/some.jsp"> 

--------------------------------------------分割线--------------------------------------------
上面总结的都是我平时用到的一些指令语法等内容,其他没有用到的我就暂时没有放上来,以后会继续补充哒n(*≧▽≦*)n!

FreeMarker模板使用小结的更多相关文章

  1. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  2. Spring 4 使用Freemarker模板发送邮件&添加附件

    前言 Spring对Java的邮件发送提供了很好的支持,提供了超级简单的API,大大简化了Java邮件发送功能的开发. Spring对Email的支持是基于JavaMail API开发的,所以,我们在 ...

  3. FreeMarker模板开发指南知识点梳理

    freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...

  4. 161213、Maven资源替换和Freemarker模板

    先介绍一下本文的两位主角: Apache Maven - 正当红的项目管理工具 FreeMarker - 老牌的模板引擎 两者貌似互不相干,何来冲突呢? 原来Maven有一个内置的资源替换机制, 可以 ...

  5. FreeMarker模板引擎

    现在开发的项目,也是基于SOA架构,每个功能接口都是用WebService实现,Web服务的通信协议就是用XML来传输. 以前写WebService都是自动生成XML,没想到这项目竟然要自己定义XML ...

  6. FreeMarker模板语法

    四.FreeMarker模板语法 要编写复杂的模板需要熟悉FreeMarker语法规则,官网有详细说明,中文帮助也比较详细了,下面这些内容是从网上收罗来的,感谢网友的分享,经过整理与修改的内容如下.建 ...

  7. Spring Boot 系列(五)web开发-Thymeleaf、FreeMarker模板引擎

    前面几篇介绍了返回json数据提供良好的RESTful api,下面我们介绍如何把处理完的数据渲染到页面上. Spring Boot 使用模板引擎 Spring Boot 推荐使用Thymeleaf. ...

  8. 安装freemarker模板的ftl插件

    安装freemarker模板的ftl插件 同意协议 等待运行完成 重新启动eclipse 查看是否生效

  9. JFinal配合Shiro权限控制在FreeMarker模板引擎中控制到按钮粒度的使用

    实现在FreeMarker模板中控制对应按钮的显示隐藏主要用到了Shiro中的hasRole, hasAnyRoles, hasPermission以及Authenticated等方法,我们可以实现T ...

随机推荐

  1. iOS之网络请求NSURLSession剖析

    2013年的WWDC大会上,苹果推出了NSURLSession,对Foundation URL加载系统进行了彻底的重构,提供了更丰富的API来处理网络请求,如:支持http2.0协议.直接把数据下载到 ...

  2. JDK安装图解

    JDK安装部分.. ---------- 此处是一个JDK下载链接:http://www.cr173.com/soft/14290.html 首先是解压下载的JDK安装包.然后右键以管理员身份运行. ...

  3. WeQuant交易策略—ATR

    ATR(真实波幅均值)策略 策略介绍 ATR(average true range,真实波幅均值),是用来衡量一段时间内价格的真实的平均波动范围,ATR不是一个领先指标,但是它测量最重要的市场参数之一 ...

  4. Educational Codeforces Round 27 补题

    题目链接:http://codeforces.com/contest/845 A. Chess Tourney 水题,排序之后判断第n个元素和n+1个元素是不是想等就可以了. #include < ...

  5. struts2快速入门

    1. 下载开发包 课程 以 struts2 3.15.1 讲解 2. 目录结构 apps : struts2官方demo docs : 文档 lib : jar包 src : 源码 3. 导入jar包 ...

  6. 深入理解HTTP协议—HTTP协议详解(真的很经典)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  7. shell之参数传递

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推-- 实例 以下实例我们向脚本传递三 ...

  8. javaSE基础之 LinkedList的底层简单实现

    这里贴上LinkedList底层的简单实现 package com.yck.mylinkedlist; public class Node { private Node previous; //上一结 ...

  9. thinkjs学习-this.assign传递数据和ajax调用后台接口

    在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...

  10. MyEclipse简介