Freemaker模板指令
${...}: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转移版本,比如&会由&来代替。
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模板指令的更多相关文章
- AngularJS1.X学习笔记3-内置模板指令
前面学习了数据绑定指令,现在开始学习内置模板指令.看起来有点多,目测比较好理解.OK!开始! 一.ng-repeat 1.基本用法 <!DOCTYPE html> <html lan ...
- vue 基础重要组件 模板指令 事件绑定
组件:data methods watch new vue({ data:{ a:1, b:[] }, methods:{ dosomething:function(){ this.a++; } }, ...
- vue.js的一些模板指令简述
1.模板指令都是写在<template></template>html里面 v-text : value是什么就显示什么,如果value里面有html的标签,也会直接显示出 ...
- 【Amaple教程】3. 模板指令与状态数据(state)
一个模块的template模板.JavaScript和css之间的关系其实可以如下图表示: 如果你了解Angular.Vue动态模板,那你将会对Amaple的模板感到很熟悉,在Amaple中,temp ...
- Freemaker FTL指令常用标签及语法
https://blog.csdn.net/pengpengpeng85/article/details/52070602 FTL指令常用标签及语法 注意:使用freemaker,要求所有标签必须闭合 ...
- Freemaker 自定义指令和函数
自定义函数和指令都可以在前台或者后台进行指定. 个人理解:指令的作用,主要是进行页面调整之后进行输出:函数的作用,主要是为了进行运算,返回运算结果供前台展示. (一) 自定义指令 使用以下格式调用自定 ...
- ionic2 angular2 模板指令补充
向div中插入带有html标签的数据 [innerHTML]="item.content" 字符串截取指令 {{item.de ...
- Angular——引入模板指令
基本介绍 引入模板一般都是固定的东西,比如导航栏,比如页面的底部,每个页面都重复写很麻烦,不如直接定义两个模板,引入到需要的页面中.这个过程实际是一个跨域的异步请求过程. 基本使用 <!DOCT ...
- Vue.js 模板指令
1. 数据渲染:v-text.v-html(保存了html结构).{{}}(自动更新): 2. 控制模块隐藏:v-if:直接不渲染 DOM 元素: v-show:css 里的 display:none ...
随机推荐
- Spring Cloud--搭建Eureka注册中心服务
使用RestTemplate远程调用服务的弊端: Eureka注册中心: Eureka原理: 搭建Eureka服务 引pom 启动类: 启动类上要加上@EnableEurekaServer注解: 配置 ...
- Java分页下载
需求.提供公共的可以按照一定条件查询出结果,并提供将查询结果全部下载功能(Excel.CSV.TXT),由于一次性查出结果放到内存会占用大量内存.需要支持分页模式查询出所有数据. 实现思路 1.在公共 ...
- iOS 应用架构 (三)
iOS 客户端应用架构看似简单,但实际上要考虑的事情不少.本文作者将以系列文章的形式来回答 iOS 应用架构中的种种问题,本文是其中的第二篇,主要讲 View 层的组织和调用方案.下篇主要讨论做 Vi ...
- JFinal-美女图爬虫-一个不正经的爬虫代码
去年我做了一个项目,大量使用爬虫抓取数据,使用JFinal+JSoup组合,抓取数据,数据清洗筛选,最终保存到数据库里,结构化. 今天,我发布一个不正经的爬虫项目,如果你对JSoup做爬虫感兴趣,可以 ...
- 【虚拟机-网络IP】如何开放 Azure 虚拟机 Ping 功能
前言 文章<使用 PsPing & PaPing 进行 TCP 端口连通性测试>中提到,ICMP 协议的数据包无法通过 Azure 的防火墙和负载均衡器,所以不能直接使用 Ping ...
- pre-empting taskintel手册-Chapter7-Task Management
这节描述了IA-32架构的任务管理功能,只有当处理器运行在保护模式的时候,这个功能才是有效的,这节的侧重点在32位任务和32位TSS结构上,关于16位的任务和16位TSS结构,请看7.6节,关于64位 ...
- POJ 2184 Cow Exhibition 奶牛展(01背包,变形)
题意:有只奶牛要证明奶牛不笨,所以要带一些奶牛伙伴去证明自己.牛有智商和幽默感,两者可为负的(难在这),要求所有牛的智商和之 / 幽默感之和都不为负.求两者之和的最大值. 思路:每只牛可以带或不带上, ...
- python基础教程总结12——数据库
1. Python 数据库 API 很多支持SQL标准的数据库在Python中都有对应的客户端模块.为了在提供相同功能(基本相同)的不同模块之间进行切换(兼容),Python 规定了一个标准的 DB ...
- SAP数据中心概述
文章目录 SAP数据中心内部的组成部分 SAP数据中心的安全性 SAP数据中心的绿色运营 SAP云平台编程环境 Jerry的前一篇文章企业数字化转型与SAP云平台介绍了SAP云平台在企业数字化转型中的 ...
- Vue中使用computed与watch结合实现数据变化监听
目的:当数据变化时,为其中重要数据增加边框,实现闪烁以达到提醒目的.数据格式如下,只有在未处理火警/故障时增加闪烁边框.可以使用watch进行深度监听.数据格式已定,也非常明确要监听的数据是有两个.既 ...