一、Sequence 的内置函数
1.sequence?first 返回sequence 的第一个值。
2.sequence?last 返回sequence 的最后一个值。
3.sequence?reverse 将sequence 的现有顺序反转,即倒序排序
4.sequence?size 返回sequence 的大小
5.sequence?sort 将sequence 中的对象转化为字符串后顺序排序
6.sequence?sort_by(value) 按sequence 中对象的属性value 进行排序

注意:Sequence 不能为null 。

二、Hash 的内置函数
1. hash?keys 返回hash 里的所有key, 返回结果为sequence
2. hash?values 返回hash 里的所有value, 返回结果为sequence
例如:
<#assign user={"name": "hailang", "sex": "man"}>
<#assign keys=user?keys>
<#list keys as key>
${key}=${user[key]}
</#list>
<#if promo??> //判断promo是否存在
<#list promo as pro>
<#if pro.content?length gte 10>
${pro.content[0..10]}...//截取输出文字的长度
<#else>
${pro.content}
</#if>
</#list>
</#if>

三、操作字符串函数
1.substring (start,end )从一个字符串中截取子串
start: 截取子串开始的索引,start 必须大于等于0 ,小于等于end
end: 截取子串的长度,end 必须大于等于0 ,小于等于字符串长度,如果省略该参数,默认为字符串长度。
例子:
${'str'?substring(0)} 结果为str
${'str'?substring(1)} 结果为tr
${'str'?substring(2)} 结果为r
${'str'?substring(3)} 结果为

${'str'?substring(0,0)} 结果为
${'str'?substring(0,1)} 结果为s
${'str'?substring(0,2)} 结果为st
${'str'?substring(0,3)} 结果为str

2.cap_first 将字符串中的第一个单词的首字母变为大写。
${'str' ?cap_first} 结果为Str
3.uncap_first 将字符串中的第一个单词的首字母变为小写。
${'Str' ?cap_first} 结果为str
4.capitalize 将字符串中的所有单词的首字母变为大写
${'str' ? capitalize} 结果为STR
5.date,time,datetime 将字符串转换为日期
例如:
<#assign date1="2009-10-12"?date("yyyy-MM-dd")>
<#assign date2="9:28:20"?time("HH:mm:ss")>
<#assign date3=" 2009-10-12 9:28:20"?time("HH:mm:ss")>

${date1} 结果为2009-10-12
${date2} 结果为9:28:20
${date3} 结果为2009-10-12 9:28:20

注意:如果指定的字符串格式不正确将引发错误。
6.ends_with 判断某个字符串是否由某个子串结尾,返回布尔值。
${ "string"?ends_with("ing")?string} 返回结果为true
注意:布尔值必须转换为字符串才能输出
7.html 用于将字符串中的< 、> 、& 和"替换为对应得&lt;&gt;&quot:&amp
8.index_of (substring,start )在字符串中查找某个子串,返回找到子串的第一个字符的索引,如果没有找到子串,则返回-1 。
Start 参数用于指定从字符串的那个索引处开始搜索,start 为数字值。
如果start 大于字符串长度,则start 取值等于字符串长度,如果start 小于0 , 则start 取值为0 。
${"string"?index_of("in") à 结果为3
${"string"?index_of("ab") à 结果为-1
9.length 返回字符串的长度 ${"string"?length} à 结果为6
10.lower_case 将字符串转为小写
${"STRING"?lower_case} à 结果为string
11.upper_case 将字符串转为大写
${"string"?upper_case} à 结果为STRING
12.contains 判断字符中是否包含某个子串。返回布尔值
${"string"?contains("ing")?string} à 结果为true
注意:布尔值必须转换为字符串才能输出
13.number 将字符串转换为数字
${"111.11"?number} à 结果为111.11
14.replace 用于将字符串中的一部分从左到右替换为另外的字符串。
${"strabg"?replace("ab","in")} à 结果为string
15.split 使用指定的分隔符将一个字符串拆分为一组字符串
<#list "This|is|split"?split("|") as s>
${s}
</#list>
结果为:
This
is
split
16.trim 删除字符串首尾空格 ${" String "?trim} à 结果为String
四、操作数字
1.c 用于将数字转换为字符串
${123?c} à 结果为123
2.string 用于将数字转换为字符串
Freemarker 中预订义了三种数字格式:number,currency (货币)和percent( 百分比) 其中number 为默认的数字格式转换
例如:
<#assign tempNum=20>
${tempNum}
${tempNum?string.number} 或${tempNum?string("number")} à 结果为20
${tempNum?string.currency} 或${tempNum?string("currency")} à 结果为¥20.00
${tempNum?string. percent} 或${tempNum?string("percent")} à 结果为2,000%
五、操作布尔值
string 用于将布尔值转换为字符串输出
true 转为"true" ,false 转换为"false"
foo?string("yes","no") 如果布尔值是true, 那么返回"yes", 否则返回no

六、运算符的优先级
FreeMarker 中的运算符优先级如下(由高到低排列):
1,一元运算符:!
2,内建函数:?
3,乘除法:*, / , %
4,加减法:- , +
5,比较:> , < , >= , <= (lt , lte , gt , gte)
6,相等:== , = , !=
7,逻辑与:&&
8,逻辑或:||
9,数字范围:..

FreeMarker 小结的更多相关文章

  1. FreeMarker模板使用小结

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

  2. spring源码分析之freemarker整合

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一款程 ...

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

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

  4. Freemarker常用技巧(三)

    freemarker模板解析过程 例如:一个freemarker表达式<body> ${hello} </body>,会被解析成三个部分,分别是<body>${he ...

  5. SpringMVC源码情操陶冶-FreeMarker之web配置

    前言:本文不讲解FreeMarkerView视图的相关配置,其配置基本由FreeMarkerViewResolver实现,具体可参考>>>SpringMVC源码情操陶冶-ViewRe ...

  6. FreeMarker 快速入门

    FreeMarker 快速入门 FreeMarker是一个很值得去学习的模版引擎.它是基于模板文件生成其他文本的通用工具.本章内容通过如何使用FreeMarker生成Html web 页面 和 代码自 ...

  7. spring boot ----> 常用模板freemarker和thymeleaf

    ===========================freemarker=================================== freemarker 官网:https://freem ...

  8. freemarker中使用<@spring.*>标签实现国际化

    freemarker实现国际化使用自定义指令<@spring>实现,通过@符号可以看出是自定义的指令,在哪里定义的呢? 路径如下:org/springframework/spring-we ...

  9. Spring Boot 集成 FreeMarker 详解案例(十五)

    一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配 ...

随机推荐

  1. 如何在MyEclipse中配置jre的编译运行环境

    由于在MyEclipse中已经自带了jre编译环境,但由于版本太低,所以有时候需要将编译环境配置为系统的jre版本.在MyEclipse中配置jre的编译运行环境很简单,只需要全局配置一次,则所有项目 ...

  2. [Q]关于无法进入主界面问题解答

    打图精灵适用于AutoCAD2007或更高版,低于2007版无法使用. 若在安装打图精灵前AutoCAD已经打开,则需要将AutoCAD重新打开,然后使用“QPlot”命令. 若重新打开仍然调不出界面 ...

  3. python 之 批量替换文件中文本后缀

    代码示例如下: #!/usr/local/bin python import os def swapextensions(dir, before, after): if before[:1] != ' ...

  4. C# DataTable转实体通用方法

    public static class DataTableHelper { public static T GetEntity<T>(DataTable table) where T : ...

  5. angular $parse $eval parse VS eval

    $parse  angular中重要指令介绍($eval,$parse和$compile) Advanced Angular: $parse $parse ---------------------- ...

  6. RabbitMQ队列

    AMQP ,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无 ...

  7. servlet的url-pattern匹配规则

    首先需要明确几容易混淆的规则: servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是特定的规则.所以不要用通配符或者正则表达式的匹配规则来看待servlet的url-pattern. ...

  8. 第三天 函数 三元运算 lambda表达式 内置函数 文件操作

    面向过程: 直接一行一行写代码,遇到重复的内容复制黏贴. 不利于代码阅读 代码没有复用 面向对象 将代码块定义为函数,以后直接调用函数 增强了复用性 函数的定义方法 def 函数名(传递参数): 函数 ...

  9. 在Ubuntu 14.04安装 Let’s Encrypt并配置ssl

    1.下载安装 Let's Encrypt客户端 cd /usr/local/sbin sudo wget https://dl.eff.org/certbot-auto 2.添加执行权限 sudo c ...

  10. hdu 3631 Shortest Path

    floyd算法好像很奇妙的样子.可以做到每次加入一个点再以这个点为中间点去更新最短路,效率是n*n. #include<cstdio> #include<cstring> #i ...