${...}:Freemaker将会输出真实的值来替换大括号内的表达式。这样的表达式被称为interpolation(插值)。

FTL标签(Freemaker模板的语言标签):FTL标签和HTML标签有一些相似之处,但他们是Freemaker的指令,不会在输出中打印的。这些标签的名字以#开头。(用户自定义的FTL标签可以使用@来代替#)。

注释:注释和HTML的注释相似,他们使用<#--  和 --> 来标识。不同于HTML注释,FTL注释不会出现在输出中,因为Freemaker会跳过它们。

FTL标签页称为指令。这些指令在HTML的标签和HTML元素中的关系是相同的。

if指令:判断语句,可以有条件的跳过模板的一些片段。<#if  condition></#if>,condition的使用:==是用来判断它两侧的值是否相等的操作符,比较的结果是布尔值,也就是true和false。!=就是“不等于”,使用<#else>标签可以指定当条件为false时程序执行的内容。还有<#elseif>完善,

<#if condition >

  something

<#elseif condition>

  something

<#else>

  something

</#if>

二、list指令

当需要列表显示内容时,list指令是必须的。它的一般格式为:<#list sequence  as  loopVariable>repeatThis</#list> 。repeatThis部分将会在给定的sequence遍历时在每一项中重复,从第一项开始,一个接着一个。在所有的重复中,loopVariable将持有当前遍历项的值。这个变量仅存在于<#list...></#list>标签内。sequence可以是任意表达式,如果sequence中没有子项,可以使用items指令,避免空的标签输出,另外分隔符<#sep>.

<#list misc.fruits><ul><#items as fruit><li>  ${fruit}<#sep>, </li></#items></ul></#list>

或者 <p>Fruits:${fruits?join(",","None")}

三、include指令

使用include指令,可以在模板中插入其它文件的内容。另外重要的代码片段的一个更有利的方式使用宏,是比引入文件更为高级的方式。

使用内建函数:内建函数很像子变量或是java中的方法,它们并不是数据模型中的东西,是Freemaker在数值上添加的。为了清晰子变量是哪部分,使用?代替。来访问

user?html 给出user的HTML转移版本,比如&会由&amp;来代替。

user?upper_case给出user值的大写版本

user?cap_first给出user的首字母大写版本

user?length给出user值中字符数量,空格也会计算在内

user?size给出user序列中项目的个数。

user?index给出在user中基于0开始的user的索引值。

user?counter也像index,但是给出的是基于1的索引值

user?item_parity基于当前计数的奇偶性,给出字符串odd或是even,在给不同行着色时比较有用

一些内建函数需要参数来指定行为:

user.protected?string("Y","N")基于user.protected的布尔值来返回字符串“Y”或“N”

user?item_cycle(‘lightRow’,‘darkRow’)是上面介绍的item_parity更为常用的变体形式。

user?join(“,”)通过连接所有项,将列表转换为字符串,在每个项之间插入参数分隔符

user?starts_with(“J”)根据user值的首字母是否是“J”返回布尔值true或false

内建函数应用可以链式操作,user?upper_case?html

处理不存在的变量

数据模型中经常会有可选的变量(也就是有时不存在)。Freemaker不允许引用不存在的变量,除非明确的告诉他当变量不存在时如何处理。不论在哪里引用变量,都可以指定一个默认值来避免变量丢失这种情况,通过在变量名后面跟一个!和默认值。当变量值为空或不存在时,使用默认值。

${user!'Visitor'}

也可以在变量名后面通过跟着??来询问一个变量是否存在。将它和if指令合并

其他指令:

break指令在迭代的任意点退出。

<#if  x== 3><#break></#if>

Alphabetical  index指令对指令名可以使用驼峰形式来代替全小写形式。

Freemaker模板指令的更多相关文章

  1. AngularJS1.X学习笔记3-内置模板指令

    前面学习了数据绑定指令,现在开始学习内置模板指令.看起来有点多,目测比较好理解.OK!开始! 一.ng-repeat 1.基本用法 <!DOCTYPE html> <html lan ...

  2. vue 基础重要组件 模板指令 事件绑定

    组件:data methods watch new vue({ data:{ a:1, b:[] }, methods:{ dosomething:function(){ this.a++; } }, ...

  3. vue.js的一些模板指令简述

    1.模板指令都是写在<template></template>html里面   v-text : value是什么就显示什么,如果value里面有html的标签,也会直接显示出 ...

  4. 【Amaple教程】3. 模板指令与状态数据(state)

    一个模块的template模板.JavaScript和css之间的关系其实可以如下图表示: 如果你了解Angular.Vue动态模板,那你将会对Amaple的模板感到很熟悉,在Amaple中,temp ...

  5. Freemaker FTL指令常用标签及语法

    https://blog.csdn.net/pengpengpeng85/article/details/52070602 FTL指令常用标签及语法 注意:使用freemaker,要求所有标签必须闭合 ...

  6. Freemaker 自定义指令和函数

    自定义函数和指令都可以在前台或者后台进行指定. 个人理解:指令的作用,主要是进行页面调整之后进行输出:函数的作用,主要是为了进行运算,返回运算结果供前台展示. (一) 自定义指令 使用以下格式调用自定 ...

  7. ionic2 angular2 模板指令补充

    向div中插入带有html标签的数据   [innerHTML]="item.content"    字符串截取指令                       {{item.de ...

  8. Angular——引入模板指令

    基本介绍 引入模板一般都是固定的东西,比如导航栏,比如页面的底部,每个页面都重复写很麻烦,不如直接定义两个模板,引入到需要的页面中.这个过程实际是一个跨域的异步请求过程. 基本使用 <!DOCT ...

  9. Vue.js 模板指令

    1. 数据渲染:v-text.v-html(保存了html结构).{{}}(自动更新): 2. 控制模块隐藏:v-if:直接不渲染 DOM 元素: v-show:css 里的 display:none ...

随机推荐

  1. sql、linq和lambda查询语句比较inner join和group by组合使用及匿名类型的处理

    使用EF自己做的小功能需要遇到inner join和group by组合使用及匿名类型的处理,搜了很多,基本不能满足自己的需要,所以总结了也实现了就自己写出来,已备查看及伙伴查询参考(一般的语句查询就 ...

  2. Spring事务的5种隔离级别

    概述:isolation设定事务的隔离级别,事务管理器根据它来控制另外一个事务可以看到本事务内的哪些数据. 定义的5个不同的事务隔离级别: DEFAULT:默认的隔离级别,使用数据库默认的事务隔离级别 ...

  3. 中介者模式和php实现

    中介者模式: 中介者模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模 ...

  4. Java实现多线程下载 URL以及URLConnection

    主线程: public class MultiThreadDown { public static void main(String[] args) throws Exception{ //初始化Do ...

  5. 前端HTML以及HTML5(基本标签)

    前面一章介绍了一下前端的发展,这章简单介绍一下html的发展以及基本的标签. 一.HTML的发展史 1.概念 超文本标记语言(HyperText Markup Language,简称HTML)是为 [ ...

  6. Ionic 2 中的创建一个闪视卡片组件

    闪视卡片是记忆信息的重要工具,它的使用可以追溯到19世纪.我们将要创建一个很酷的短暂动画来实现它.看起来像是这个样子的: 闪视卡片示例 Ionic 2 实例开发 新增章节将为你介绍如何在Ionic 2 ...

  7. SQL Server 2012安装配置(Part4 )

    SQL Server 2012安装配置(Part1) SQL Server 2012安装配置(Part2) SQL Server 2012安装配置(Part3 ) SQL Server 2012安装配 ...

  8. winform 配置文件增删改查

    winform 配置文件是  App.config webform   的配置文件 是web.config 其实基本操作都一样    设置个配置文件  全局文件 访问者个配置文件  对这个配置文件增删 ...

  9. 手工恢复OSSIM数据库密码

    1,现象 今天需要远程连接ossim的mysql数据库读取些东西,于是登录ossim的终端,发现这个mysql客户端无法直接登录,使用自己安装时候那些口令都不行 alienvault:~# mysql ...

  10. SAP OData编程指南

    OData(Open Data Protocol)协议是一个开放的工业标准,用于定义RESTFul API的设计和使用.我的文章标题前加上SAP的前缀,只是为了表明这篇文章介绍的是Jerry在SAP项 ...