ftl是一种模板标记语言,用于渲染数据,输入html结构。语法简介如下:

${book.name}

${book.name?if_exists} //值是否存在

${book.name??} //值是否存在

${book.name?has_content} //值是否存在

${book.name?default("xxx")} //默认值xxx

${book.name!"xxx"} //默认值xxx

${book.date?string("yyyy-mm-dd")} //日期格式

<#setting datetime_format="yyyy-MM-dd"/>   ${post.pubTime?number_to_datetime}  //日期格式,long型转换成yyyy-MM-dd格式

${book?string.number} //数字格式,20

${book?string.currency} //$20.00

${book?string.percent} //20%

<#assign foo=true> //声明变量
${foo?string("yes","no")} //yes

使用lt,gt,lte,gte来代替比较符号

内置函数:使用?来代替 eg.${book?html}
字符串:
html---对字符串进行html编码
cap_first---字符串首字母大写
lower_case---将字符串转化成小写
trim---去掉字符前后的空白字符

sequences(序列):
${list?size}  size---获得序列中元素的个数

逻辑判断

<#if condition>....<#elseif condition2>...<#else>....</#if>

快速定义int区间的集合
<#assign len = 0..100> //不需要使用[]

循环读取集合
<#list items as item> ${item} </#list>
item_index:当前变量的索引值
item_has_next:是否存在下一个对象
<#if items?size != 0></#if> : 判断集合的长度

宏/模板
定义宏:<#macro greet><p>段落段落段落<p></#macro>
使用宏:<@greet></@greet>
定义宏的参数:跟在宏的名字后面
<#macro greet person color><p>段落段落段落<p></#macro>
调用参数时,不用关心顺序问题:<@greet person="John" color="red"></@greet>
使用<#nested>嵌套宏调用

hash与list的定义
<#assign c={"a":"aaa","b":"bbbb"}>
${c.a}     //'aaa'

<#assign c=[1,2,3,4,5]>
<#list c[1..4] as v>
${v}
</#list>

用compress来处理输出
<#compress>....</#compress>消除空白行
<@compress single_line=true>...</@compress>压缩为一行

${}为变量的渲染显示,<>定义操作符, ? 函数名字

ftl指令规则:
1.开始标签<#if ...>
2.结束标签</#if>
3.空标签 <#assign x=2.582/>
标签前面的符号是#时,指的是系统内建指令。
标签前面的符号是@时,指的是用户指令。

参考:http://www.havenliu.com/goodarticle/420.html

freemarker语法简介的更多相关文章

  1. Android系统Recovery工作原理之使用update.zip升级过程---updater-script脚本语法简介以及执行流程(转)

    目前update-script脚本格式是edify,其与amend有何区别,暂不讨论,我们只分析其中主要的语法,以及脚本的流程控制. 一.update-script脚本语法简介: 我们顺着所生成的脚本 ...

  2. freemarker语法介绍及其入门教程实例

    # freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>####  1.文本,直接输 ...

  3. protobuf语法简介2

    protobuf语法简介2 1.optional的字段和默认值 如上所述,消息描述中的一个元素可以被标记为"可选的"(optional).一个格式良好的消息可以包含0个或一个opt ...

  4. protobuf 语法简介

    protobuf 语法简介 1.基本语义 在.proto文件中,最基本的数据类型为message,如其定义所示,由message引导,之后是message类型的名字,之后是由{}包含的各个域(fiel ...

  5. ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介

    ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...

  6. ES6常用语法简介import export

    ES6常用语法简介import export let与var用法区别 //var var a = []; for (var i = 0; i < 10; i++) { a[i] = functi ...

  7. Android系统Recovery工作原理之使用update.zip升级过程分析(九)---updater-script脚本语法简介以及执行流程【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465603       Android系统Recovery工作原理之使用update.zip ...

  8. 【ABAP系列】SAP ABAP7.40新语法简介第一篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...

  9. 【ABAP系列】SAP ABAP7.40新语法简介第二篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...

随机推荐

  1. iOS- 利用AFNetworking3.0+(最新AFN) - 实现文件断点下载

    官方建议AFN的使用方法   0.导入框架准备工作 •1. 将AFNetworking3.0+框架程序拖拽进项目   •2. 或使用Cocopod 导入AFNetworking3.0+   •3.   ...

  2. android学习笔记 Service

    Service(服务): 长期后台运行的没有界面的组件 android应用什么地方需要用到服务? 天气预报:后台的连接服务器的逻辑,每隔一段时间获取最新的天气信息.股票显示:后台的连接服务器的逻辑,每 ...

  3. Effective Java 14 In public classes, use accessor methods, not public fields

    Principle To offer the benefits of encapsulation you should always expose private field with public ...

  4. 第1章 Java中常用字符串方法总结

    1.1 charAt方法——提取指定字符 1.2 codePointAt方法——提取索引字符代码点 1.3 codePointBefore方法——获取索引前一个字符的代码点 1.4 codePoint ...

  5. .net framework 4.6.2 下载

    .net framework   .net framework版本: 4.6.2 File Name: NDP462-KB3151800-x86-x64-AllOS-ENU.exe 发布日期: 201 ...

  6. 移动web在ios和android下点击元素出现阴影问题

     移动web开发经验总结 1.-webkit-tap-highlight-color:rgba(255,255,255,0)可以同时屏蔽ios和android下点击元素时出现的阴影.备注:transp ...

  7. struts2 基本用法

    Struts2必需库: commons-fileupload.jar.commons-io-1.3.2.jar.freemarker-2.3.16.jar.javassist-3.7.ga.jar.o ...

  8. 使用Azure Automation(自动化)定时关闭和启动虚拟机

    1. 概述 作为Windows Azure的用户,使用Azure的过程中,最担心的事情就是还没到月底,预设的费用就快消耗完了(下面两张账单图是我最讨厌看到的).但是仔细分析自己的费用列表,发现绝大部分 ...

  9. codeforces 101C C. Vectors(数学)

    题目链接: C. Vectors time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  10. RabbitMQ 一二事(5) - 通配符模式应用

    之前的路由模式是通过key相等来匹配 而通配符,顾名思义,符合条件,则进行消息匹配发送 将路由键和某模式进行匹配.此时队列需要绑定要一个模式上. 符号“#”匹配一个或多个词,符号“*”匹配不多不少一个 ...